diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1818939e..ba6de113 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -211,7 +211,7 @@ jobs: path: | out/Size.sol/Size.json out/SizeFactory.sol/SizeFactory.json - out/IPriceFeed.sol/IPriceFeed.json + out/PriceFeed.sol/PriceFeed.json out/IPool.sol/IPool.json out/IERC20Metadata.sol/IERC20Metadata.json out/Errors.sol/Errors.json diff --git a/.gitignore b/.gitignore index ffe856ba..72ae7a8e 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ medusa # Custom selectors.txt + +# Typechain +types/ diff --git a/.gitmodules b/.gitmodules index 0c9a76e2..98610f4c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,9 @@ [submodule "lib/halmos-cheatcodes"] path = lib/halmos-cheatcodes url = https://github.com/a16z/halmos-cheatcodes +[submodule "lib/v3-periphery"] + path = lib/v3-periphery + url = https://github.com/Uniswap/v3-periphery +[submodule "lib/v3-core"] + path = lib/v3-core + url = https://github.com/Uniswap/v3-core diff --git a/README.md b/README.md index 280271f7..be2e11fe 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Target networks: ## Audits +- [2024-12-10 - ChainDefenders](./audits/2024-12-10-ChainDefenders.pdf) +- [2024-11-13 - Custodia Security](./audits/2024-11-13-Custodia-Security.pdf) - [2024-06-10 - Code4rena](https://code4rena.com/reports/2024-06-size) - [2024-06-08 - Spearbit](./audits/2024-06-08-Spearbit.pdf) - [2024-03-26 - Solidified](./audits/2024-03-26-Solidified.pdf) @@ -208,14 +210,11 @@ for i in {0..5}; do halmos --loop $i; done ## Known limitations -- The protocol currently supports only a single market (USDC/ETH for borrow/collateral tokens) - The protocol does not support rebasing/fee-on-transfer tokens -- The protocol does not support tokens with different decimals than the current market - The protocol only supports tokens compliant with the IERC20Metadata interface - The protocol only supports pre-vetted tokens - The protocol owner, KEEPER_ROLE, PAUSER_ROLE, and BORROW_RATE_UPDATER_ROLE are trusted -- The protocol does not have any fallback oracles. -- Price feeds must be redeployed and updated in case any Chainlink configuration changes (stale price timeouts, decimals, etc) +- The protocol uses Uniswap TWAP as a fallback oracle in case Chainlink is stale. - In case Chainlink reports a wrong price, the protocol state cannot be guaranteed. This may cause incorrect liquidations, among other issues - In case the protocol is paused, the price of the collateral may change during the unpause event. This may cause unforseen liquidations, among other issues - It is not possible to pause individual functions. Nevertheless, BORROW_RATE_UPDATER_ROLE and admin functions are enabled even if the protocol is paused @@ -268,10 +267,11 @@ If it does not work, try removing `--verify` ### Deployment checklist +0. Due dilligence on borrow/collateral tokens: non-rebasing, IERC20Metadata 1. Deploy -2. Grant `KEEPER_ROLE` to keeper bot -3. Grant `BORROW_RATE_UPDATER_ROLE` to updater bot -4. Grant `PAUSER_ROLE` to pauser bot +2. Grant `KEEPER_ROLE` to liquidation contract +3. Grant `BORROW_RATE_UPDATER_ROLE` to bot +4. Grant `PAUSER_ROLE` to bot, multisig signers ## Upgrade @@ -279,32 +279,3 @@ If it does not work, try removing `--verify` source .env.sepolia forge script script/Upgrade.s.sol --rpc-url $RPC_URL --gas-limit 30000000 --sender $DEPLOYER_ADDRESS --account $DEPLOYER_ACCOUNT --ffi --verify -vvvvv ``` - -### v1.5 migration - -1. Deploy the SizeFactory - -```bash -source .env -export NETWORK_CONFIGURATION=base-sepolia-size-factory -forge script script/DeploySizeFactory.s.sol --rpc-url $RPC_URL --gas-limit 30000000 --sender $DEPLOYER_ADDRESS --account $DEPLOYER_ACCOUNT --ffi --verify -vvvvv -``` - -2. Manually call `sizeFactory.addMarket` (x2), `sizeFactory.addPriceFeed` (x2) - -3. Manually call `sizeFactory.createBorrowATokenV1_5` - -4. Verify the correctness through `sizeFactory.get{Markets,PriceFeeds}Descriptions` - -5. Pause all markets - -6. Call `GetV1_5ReinitializeDataScript` - -```bash -source .env -forge script script/GetV1_5ReinitializeData.s.sol --rpc-url $RPC_URL --gas-limit 30000000 --sender $DEPLOYER_ADDRESS --account $DEPLOYER_ACCOUNT --ffi -vvvvv -``` - -7. Manually upgrade and reinitialize the markets: `size.upgradeToAndCall(sizeFactory.sizeImplementation(), "reinitialize")` - -8. Unpause all markets diff --git a/audits/2024-11-13-Custodia-Security.pdf b/audits/2024-11-13-Custodia-Security.pdf new file mode 100644 index 00000000..65e4134f Binary files /dev/null and b/audits/2024-11-13-Custodia-Security.pdf differ diff --git a/audits/2024-12-10-ChainDefenders.pdf b/audits/2024-12-10-ChainDefenders.pdf new file mode 100644 index 00000000..b4dfc2b6 Binary files /dev/null and b/audits/2024-12-10-ChainDefenders.pdf differ diff --git a/broadcast/UpgradeSizeFactory.s.sol/8453/run-1734432794.json b/broadcast/UpgradeSizeFactory.s.sol/8453/run-1734432794.json new file mode 100644 index 00000000..e9d2a97b --- /dev/null +++ b/broadcast/UpgradeSizeFactory.s.sol/8453/run-1734432794.json @@ -0,0 +1,1077 @@ +{ + "transactions": [ + { + "hash": "0xb041ee0dc68034df62fc5319c2446042e4bfe57c9e1b6f4978304b77317a29d5", + "transactionType": "CREATE2", + "contractName": "BuyCreditLimit", + "contractAddress": "0x41b733fe827a5cc663f795e0a0b2100aa7fa6d16", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xb22c0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061088f610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063339bb6311461004357806399e6337214610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104cd565b610077565b005b6100626100723660046104cd565b6101a3565b604080518082019091528135815260208082019061009790840184610517565b6100a090610632565b9052335f908152600e8401602090815260409091208251815582820151805180519293919260018501926100d8928492910190610470565b5060208281015180516100f19260018501920190610470565b506040820151805161010d916002840191602090910190610470565b5050833592507fc8871d6792330ffe03599518801289027505937d3a59e47d58e8138932305ecb915061014590506020840184610517565b61014f9080610712565b61015c6020860186610517565b61016a906020810190610712565b6101776020880188610517565b610185906040810190610712565b6040516101979695949392919061078f565b60405180910390a25050565b5f6040518060400160405280835f013581526020018380602001906101c89190610517565b6101d190610632565b905290506101de816101fc565b6101f757600a830154600b8401546101f791839161021b565b505050565b80515f9015801561021557506102158260200151610280565b92915050565b82515f0361023c576040516309bfa29360e01b815260040160405180910390fd5b610246824261080a565b8351101561027157825160405162225c9d60e01b815260048101919091526024015b60405180910390fd5b6101f7836020015183836102a6565b8051515f901580156102955750602082015151155b801561021557505060400151511590565b82515115806102b85750602083015151155b806102c65750604083015151155b156102e4576040516368a0e7c960e11b815260040160405180910390fd5b602083015151835151141580610301575060408301515183515114155b1561031f5760405163125b84af60e31b815260040160405180910390fd5b8251515f19905b80156103ab578451829061033b60018461081d565b8151811061034b5761034b610830565b60200260200101511061037157604051633b8e6a5760e21b815260040160405180910390fd5b845161037e60018361081d565b8151811061038e5761038e610830565b6020026020010151915080806103a390610844565b915050610326565b5082845f01515f815181106103c2576103c2610830565b6020026020010151101561041957835180515f906103e2576103e2610830565b6020026020010151838360405163a35ff9f160e01b8152600401610268939291909283526020830191909152604082015260600190565b8351805183919061042c9060019061081d565b8151811061043c5761043c610830565b6020026020010151111561046a578351805161045a9060019061081d565b815181106103e2576103e2610830565b50505050565b828054828255905f5260205f209081019282156104a9579160200282015b828111156104a957825182559160200191906001019061048e565b506104b59291506104b9565b5090565b5b808211156104b5575f81556001016104ba565b5f80604083850312156104de575f80fd5b82359150602083013567ffffffffffffffff8111156104fb575f80fd5b83016040818603121561050c575f80fd5b809150509250929050565b5f8235605e1983360301811261052b575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561056c5761056c610535565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561059b5761059b610535565b604052919050565b5f67ffffffffffffffff8211156105bc576105bc610535565b5060051b60200190565b5f82601f8301126105d5575f80fd5b813560206105ea6105e5836105a3565b610572565b8083825260208201915060208460051b87010193508684111561060b575f80fd5b602086015b848110156106275780358352918301918301610610565b509695505050505050565b5f60608236031215610642575f80fd5b61064a610549565b823567ffffffffffffffff80821115610661575f80fd5b61066d368387016105c6565b8352602091508185013581811115610683575f80fd5b850136601f820112610693575f80fd5b80356106a16105e5826105a3565b81815260059190911b820184019084810190368311156106bf575f80fd5b928501925b828410156106dd578335825292850192908501906106c4565b80868801525050505060408501359150808211156106f9575f80fd5b50610706368286016105c6565b60408301525092915050565b5f808335601e19843603018112610727575f80fd5b83018035915067ffffffffffffffff821115610741575f80fd5b6020019150600581901b3603821315610758575f80fd5b9250929050565b8183525f6001600160fb1b03831115610776575f80fd5b8260051b80836020870137939093016020019392505050565b606081525f6107a260608301888a61075f565b828103602084810191909152868252879181015f5b888110156107d3578335825292820192908201906001016107b7565b5084810360408601526107e781878961075f565b9b9a5050505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610215576102156107f6565b81810381811115610215576102156107f6565b634e487b7160e01b5f52603260045260245ffd5b5f81610852576108526107f6565b505f19019056fea26469706673582212209c52cd23c38c9564db50c2720a2763f93f6886f163118bdead8133888bfbf3cf64736f6c63430008170033", + "nonce": "0x7a", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xaea27d66fb9d54b58f437c4e8a95a27a5133135e2c38f9cd7f9e7d66fa5eb4dd", + "transactionType": "CREATE2", + "contractName": "YieldCurveLibrary", + "contractAddress": "0xed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xaaeb9", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061082c610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80632b8d122a14610038575b5f80fd5b61004b610046366004610642565b61005d565b60405190815260200160405180910390f35b825180515f9182826100715761007161075c565b60200260200101518310806100a95750845161008e600183610784565b8151811061009e5761009e61075c565b602002602001015183115b1561012b5782855f01515f815181106100c4576100c461075c565b6020026020010151865f01516001846100dd9190610784565b815181106100ed576100ed61075c565b602002602001015160405163a35ff9f160e01b8152600401610122939291909283526020830191909152604082015260600190565b60405180910390fd5b5f8061013a875f015186610283565b915091505f610184886020015184815181106101585761015861075c565b6020026020010151896040015185815181106101765761017661075c565b602002602001015189610380565b9050818314610271575f885f015184815181106101a3576101a361075c565b602002602001015190505f895f015184815181106101c3576101c361075c565b602002602001015190505f6102138b6020015186815181106101e7576101e761075c565b60200260200101518c6040015187815181106102055761020561075c565b60200260200101518c610380565b905083811061025a576102426102298583610784565b610233858c610784565b61023d8686610784565b610442565b61024c908561079d565b97505050505050505061027c565b6102676102298286610784565b61024c9085610784565b935061027c92505050565b9392505050565b81515f90819061029590600190610784565b90508382815181106102a9576102a961075c565b60200260200101518310806102d657508381815181106102cb576102cb61075c565b602002602001015183115b156102e657505f19905080610379565b808211610377575f60026102fa838561079d565b61030491906107b0565b9050838582815181106103195761031961075c565b602002602001015103610330579150819050610379565b838582815181106103435761034361075c565b602002602001015110156103635761035c81600161079d565b9250610371565b61036e600182610784565b91505b506102e6565b905b9250929050565b5f825f036103985761039184610456565b905061027c565b604082015167ffffffffffffffff1615806103d95750816040015167ffffffffffffffff16826020015167ffffffffffffffff16426103d79190610784565b115b15610409576020820151604051631ef81c5560e21b815267ffffffffffffffff9091166004820152602401610122565b61039161043361042e845f01516001600160801b031686670de0b6b3a7640000610442565b61047f565b61043d90866107cf565b610456565b5f61044e8484846104ab565b949350505050565b5f8082121561047b57604051635467221960e11b815260048101839052602401610122565b5090565b5f6001600160ff1b0382111561047b5760405163123baf0360e11b815260048101839052602401610122565b5f825f1904841183021582026104c85763ad251c275f526004601cfd5b5091020490565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610506576105066104cf565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610535576105356104cf565b604052919050565b5f67ffffffffffffffff821115610556576105566104cf565b5060051b60200190565b5f82601f83011261056f575f80fd5b8135602061058461057f8361053d565b61050c565b8083825260208201915060208460051b8701019350868411156105a5575f80fd5b602086015b848110156105c157803583529183019183016105aa565b509695505050505050565b803567ffffffffffffffff811681146105e3575f80fd5b919050565b5f606082840312156105f8575f80fd5b6106006104e3565b905081356001600160801b0381168114610618575f80fd5b8152610626602083016105cc565b6020820152610637604083016105cc565b604082015292915050565b5f805f60a08486031215610654575f80fd5b833567ffffffffffffffff8082111561066b575f80fd5b908501906060828803121561067e575f80fd5b6106866104e3565b823582811115610694575f80fd5b6106a089828601610560565b825250602080840135838111156106b5575f80fd5b8401601f81018a136106c5575f80fd5b80356106d361057f8261053d565b81815260059190911b8201830190838101908c8311156106f1575f80fd5b928401925b8284101561070f578335825292840192908401906106f6565b85850152505050604084013583811115610727575f80fd5b6107338a828701610560565b60408401525081965061074889828a016105e8565b955050505050608084013590509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561079757610797610770565b92915050565b8082018082111561079757610797610770565b5f826107ca57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018281125f8312801582168215821617156107ee576107ee610770565b50509291505056fea2646970667358221220152ab6d3891b100c538e482b769a2f0885f88d698ea0ada691c217210e61277364736f6c63430008170033", + "nonce": "0x7b", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x23f718a23cd35e63767cb34051ce68ce953416cb480c11617d5e77be37e6f4a0", + "transactionType": "CREATE2", + "contractName": "CapsLibrary", + "contractAddress": "0x41c3ce7663a7b06faacf8d62574999f3ca1d753a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x8410b", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610618610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80636ada66851461004e57806388d352e814610063578063bfbfe8ab14610076575b5f80fd5b61006161005c366004610336565b610089565b005b61006161007136600461034d565b61019f565b610061610084366004610384565b610214565b6009810154601a820154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156100d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fc91906103a4565b111561019c576009810154601a820154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610151573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017591906103a4565b604051630722b7fb60e21b8152600481019290925260248201526044015b60405180910390fd5b50565b600985015482111561020d575f8483116101b9575f6101c3565b6101c385846103bb565b90505f8285116101d3575f6101dd565b6101dd83866103bb565b90508082111561020a576040516321a5473d60e01b81526004810183905260248101829052604401610193565b50505b5050505050565b601982015460158301546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa158015610267573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028b91906104c1565b610100015160158401546040516370a0823160e01b81526001600160a01b0380841660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156102df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030391906103a4565b9050828110156103305760405163751babbf60e01b81526004810182905260248101849052604401610193565b50505050565b5f60208284031215610346575f80fd5b5035919050565b5f805f805f60a08688031215610361575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f8060408385031215610395575f80fd5b50508035926020909101359150565b5f602082840312156103b4575f80fd5b5051919050565b818103818111156103da57634e487b7160e01b5f52601160045260245ffd5b92915050565b6040516101e0810167ffffffffffffffff8111828210171561041057634e487b7160e01b5f52604160045260245ffd5b60405290565b5f60208284031215610426575f80fd5b6040516020810181811067ffffffffffffffff8211171561045557634e487b7160e01b5f52604160045260245ffd5b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610481575f80fd5b919050565b805164ffffffffff81168114610481575f80fd5b805161ffff81168114610481575f80fd5b80516001600160a01b0381168114610481575f80fd5b5f6101e082840312156104d2575f80fd5b6104da6103e0565b6104e48484610416565b81526104f260208401610462565b602082015261050360408401610462565b604082015261051460608401610462565b606082015261052560808401610462565b608082015261053660a08401610462565b60a082015261054760c08401610486565b60c082015261055860e0840161049a565b60e082015261010061056b8185016104ab565b9082015261012061057d8482016104ab565b9082015261014061058f8482016104ab565b908201526101606105a18482016104ab565b908201526101806105b3848201610462565b908201526101a06105c5848201610462565b908201526101c06105d7848201610462565b90820152939250505056fea26469706673582212205ee48f281d3fde1069338080fece9eb9a5ec373f4f498891f1a4b82bab6bf7f664736f6c63430008170033", + "nonce": "0x7c", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x80b22caa779b431094aa005a786b38215dcf73509122c6e16896ed54939a0628", + "transactionType": "CREATE2", + "contractName": "UpdateConfig", + "contractAddress": "0xba1b87a252dbb06e1bfa367898bbcf78e548f048", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x142492", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611046610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80634752b3b31461006457806386617e7714610085578063d72f4008146100f1578063dd378fd614610132578063e57980dd14610190575b5f80fd5b81801561006f575f80fd5b5061008361007e366004610eea565b6101a2565b005b610098610093366004610f34565b610b01565b6040516100e89190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201516001600160a01b03169181019190915260c00190565b60405180910390f35b6101046100ff366004610f34565b610b8d565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016100e8565b610145610140366004610f34565b610bda565b6040516100e891905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b61008361019e366004610eea565b5050565b6102096101af8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600981526863724f70656e696e6760b81b60208201529150610c579050565b1561021d5760208101356006830155610a6d565b61028861022a8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600d81526c31b92634b8bab4b230ba34b7b760991b60208201529150610c579050565b156102cf5760078201546020820135106102c057604051637224fdd560e11b8152602082013560048201526024015b60405180910390fd5b60208101356007830155610a6d565b61034a6102dc8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601981527f6d696e696d756d437265646974426f72726f7741546f6b656e0000000000000060208201529150610c579050565b1561035e5760208101356008830155610a6d565b6103cb61036b8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600f81526e0626f72726f7741546f6b656e43617608c1b60208201529150610c579050565b156103df5760208101356009830155610a6d565b6104456103ec8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600881526736b4b72a32b737b960c11b60208201529150610c579050565b156104cf5781541580159061047857508154610470906301e1338090670de0b6b3a764000090610c7d565b816020013510155b156104c057806020013561049e6301e13380670de0b6b3a7640000855f015f0154610c7d565b6040516309451ba560e11b8152600481019290925260248201526044016102b7565b6020810135600a830155610a6d565b6105356104dc8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600881526736b0bc2a32b737b960c11b60208201529150610c579050565b1561059d5781541580159061056857508154610560906301e1338090670de0b6b3a764000090610c7d565b816020013510155b1561058e57806020013561049e6301e13380670de0b6b3a7640000855f015f0154610c7d565b6020810135600b830155610a6d565b6106056105aa8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600a81526939bbb0b82332b2a0a82960b11b60208201529150610c579050565b1561066157610628670de0b6b3a76400006301e133808460060160050154610c7d565b81602001351061065557806020013561049e670de0b6b3a76400006301e133808560060160050154610c7d565b60208101358255610a6d565b6106cf61066e8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601081526f667261676d656e746174696f6e46656560801b60208201529150610c579050565b156106e35760208101356001830155610a6d565b61075e6106f08280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601881527f6c69717569646174696f6e52657761726450657263656e74000000000000000060208201529150610c579050565b156107725760208101356002830155610a6d565b6107ed61077f8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506040805180820190915260208082527f6f766572647565436f6c6c61746572616c50726f746f636f6c50657263656e74908201529150610c579050565b156108015760208101356003830155610a6d565b61087c61080e8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601981527f636f6c6c61746572616c50726f746f636f6c50657263656e740000000000000060208201529150610c579050565b156108905760208101356004830155610a6d565b6108fa61089d8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600c81526b199959549958da5c1a595b9d60a21b60208201529150610c579050565b15610925576005820180546001600160a01b03191660208301356001600160a01b0316179055610a6d565b61098c6109328280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506040805180820190915260098152681c1c9a58d95199595960ba1b60208201529150610c579050565b156109b757600c820180546001600160a01b03191660208301356001600160a01b0316179055610a6d565b610a176109c48280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516060810190915260278082529092509050610fea6020830139610c57565b15610a4857600d820180546001600160c01b0316600160c01b602084013567ffffffffffffffff1602179055610a6d565b610a528180610f4b565b60405163aa8df76960e01b81526004016102b7929190610f95565b610a7e610a7983610b01565b610c91565b610a8f610a8a83610bda565b610d29565b610aa0610a9b83610b8d565b610e3b565b610aaa8180610f4b565b604051610ab8929190610fc3565b60405180910390207f6818c9181f3a8cb0f4d8178667c423a4c4ed24fc2410822be08e76ef50b2de1e8260200135604051610af591815260200190565b60405180910390a25050565b610b3d6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b506040805160c081018252825481526001830154602082015260028301549181019190915260038201546060820152600482015460808201526005909101546001600160a01b031660a082015290565b604080518082019091525f80825260208201525060408051808201909152600c8201546001600160a01b03168152600d90910154600160c01b900467ffffffffffffffff16602082015290565b610c0d6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b506040805160c081018252600683015481526007830154602082015260088301549181019190915260098201546060820152600a8201546080820152600b9091015460a082015290565b5f81518351148015610c76575081805190602001208380519060200120145b9392505050565b5f610c89848484610ec6565b949350505050565b670de0b6b3a764000081606001511115610cc657806060015160405163fc4a516960e01b81526004016102b791815260200190565b670de0b6b3a764000081608001511115610cfb57806080015160405163fc4a516960e01b81526004016102b791815260200190565b60a08101516001600160a01b0316610d265760405163de0ce17d60e01b815260040160405180910390fd5b50565b8051670de0b6b3a76400001115610d59578051604051637224fdd560e11b815260048101919091526024016102b7565b670de0b6b3a764000081602001511015610d8e578060200151604051637224fdd560e11b81526004016102b791815260200190565b6020810151815111610dc357805160208201516040516334426b9b60e11b8152600481019290925260248201526044016102b7565b80604001515f03610de75760405163052f91cb60e51b815260040160405180910390fd5b80608001515f03610e0b5760405163052f91cb60e51b815260040160405180910390fd5b80608001518160a0015111610d26578060a00151604051632431f0f760e21b81526004016102b791815260200190565b80516001600160a01b0316610e635760405163de0ce17d60e01b815260040160405180910390fd5b805f01516001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e9190610fd2565b5f825f190484118302158202610ee35763ad251c275f526004601cfd5b5091020490565b5f8060408385031215610efb575f80fd5b82359150602083013567ffffffffffffffff811115610f18575f80fd5b830160408186031215610f29575f80fd5b809150509250929050565b5f60208284031215610f44575f80fd5b5035919050565b5f808335601e19843603018112610f60575f80fd5b83018035915067ffffffffffffffff821115610f7a575f80fd5b602001915036819003821315610f8e575f80fd5b9250929050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b818382375f9101908152919050565b5f60208284031215610fe2575f80fd5b505191905056fe7661726961626c65506f6f6c426f72726f77526174655374616c6552617465496e74657276616ca2646970667358221220546556f8a7ee54492eb52c76af3d0271d8d369a7747d3d70945cc986cb0bb5fe64736f6c63430008170033", + "nonce": "0x7d", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0baa50bd0a40d95390eddab25e8095c73df404285112e89064e80c3366177f7b", + "transactionType": "CREATE2", + "contractName": "DepositTokenLibrary", + "contractAddress": "0x0b703e06170f72e1fea923a4e44fea2e3b406f8c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9f8aa", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610717610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c80635fe31d8514610059578063785923ca1461007a5780637d3a9c2114610099578063c6504261146100b8575b5f80fd5b818015610064575f80fd5b50610078610073366004610655565b6100d7565b005b818015610085575f80fd5b50610078610094366004610655565b61015b565b8180156100a4575f80fd5b506100786100b3366004610655565b6101cd565b8180156100c3575f80fd5b506100786100d2366004610655565b610255565b60148401546001600160a01b03166100f1818530856102d3565b60168501546040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052909116906340c10f19906044015f604051808303815f87803b15801561013e575f80fd5b505af1158015610150573d5f803e3d5ffd5b505050505050505050565b601a840154604051636ce5768960e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063d9caed12906064015b5f604051808303815f87803b1580156101b1575f80fd5b505af11580156101c3573d5f803e3d5ffd5b5050505050505050565b60148401546016850154604051632770a7eb60e21b81526001600160a01b038681166004830152602482018590529283169290911690639dc29fac906044015f604051808303815f87803b158015610223575f80fd5b505af1158015610235573d5f803e3d5ffd5b5061024e925050506001600160a01b0382168484610340565b5050505050565b601584015461026f906001600160a01b03168430846102d3565b601a8401546015850154610290916001600160a01b03918216911683610376565b601a840154604051638340f54960e01b81526001600160a01b03858116600483015284811660248301526044820184905290911690638340f5499060640161019a565b6040516001600160a01b03848116602483015283811660448301526064820183905261033a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610401565b50505050565b6040516001600160a01b0383811660248301526044820183905261037191859182169063a9059cbb90606401610308565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526103c78482610467565b61033a576040516001600160a01b0384811660248301525f60448301526103fb91869182169063095ea7b390606401610308565b61033a84825b5f6104156001600160a01b03841683610508565b905080515f141580156104395750808060200190518101906104379190610696565b155b1561037157604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b5f805f846001600160a01b03168460405161048291906106b5565b5f604051808303815f865af19150503d805f81146104bb576040519150601f19603f3d011682016040523d82523d5f602084013e6104c0565b606091505b50915091508180156104ea5750805115806104ea5750808060200190518101906104ea9190610696565b80156104ff57505f856001600160a01b03163b115b95945050505050565b606061051583835f61051c565b9392505050565b6060814710156105415760405163cd78605960e01b815230600482015260240161045e565b5f80856001600160a01b0316848660405161055c91906106b5565b5f6040518083038185875af1925050503d805f8114610596576040519150601f19603f3d011682016040523d82523d5f602084013e61059b565b606091505b50915091506105ab8683836105b5565b9695505050505050565b6060826105ca576105c582610611565b610515565b81511580156105e157506001600160a01b0384163b155b1561060a57604051639996b31560e01b81526001600160a01b038516600482015260240161045e565b5080610515565b8051156106215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610650575f80fd5b919050565b5f805f8060808587031215610668575f80fd5b843593506106786020860161063a565b92506106866040860161063a565b9396929550929360600135925050565b5f602082840312156106a6575f80fd5b81518015158114610515575f80fd5b5f82515f5b818110156106d457602081860181015185830152016106ba565b505f92019182525091905056fea2646970667358221220c3455c256fff90572aa24cd6381131dbeacbe60fb5630ed0e097b6874c6c035c64736f6c63430008170033", + "nonce": "0x7e", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x356a343eec0b48c2eff03fbe7b7f03721f18fcd56aabb8524d6eaa38212b56b3", + "transactionType": "CREATE2", + "contractName": "Deposit", + "contractAddress": "0xa079ad0c7c2620d368c68efcd57d286c1959c6ee", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xade5b", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610855610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063804612351461004357806387e2411514610058575b5f80fd5b610056610051366004610779565b610077565b005b818015610063575f80fd5b50610056610072366004610779565b6101c6565b34158015906100b657508060200135341415806100b6575060138201546001600160a01b03166100aa60208301836107ae565b6001600160a01b031614155b156100db57604051635e531d5360e11b81523460048201526024015b60405180910390fd5b60148201546001600160a01b03166100f660208301836107ae565b6001600160a01b03161415801561012f575060158201546001600160a01b031661012360208301836107ae565b6001600160a01b031614155b156101665761014160208201826107ae565b60405163276b4fc160e01b81526001600160a01b0390911660048201526024016100d2565b80602001355f0361018a5760405163052f91cb60e51b815260040160405180910390fd5b5f61019b60608301604084016107ae565b6001600160a01b0316036101c25760405163de0ce17d60e01b815260040160405180910390fd5b5050565b336020820135341561024f5750601383015460408051630d0e30db60e41b8152905147926001600160a01b03169163d0e30db09184916004808201925f9290919082900301818588803b15801561021b575f80fd5b505af115801561022d573d5f803e3d5ffd5b50505050601385015461024b91506001600160a01b03163083610487565b3091505b60158401546001600160a01b031661026a60208501856107ae565b6001600160a01b03160361038457730b703e06170f72e1fea923a4e44fea2e3b406f8c63c650426185846102a460608801604089016107ae565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b1580156102f6575f80fd5b505af4158015610308573d5f803e3d5ffd5b505050506019840154600160a01b900460ff1661037f57604051636ada668560e01b8152600481018590527341c3ce7663a7b06faacf8d62574999f3ca1d753a90636ada6685906024015f6040518083038186803b158015610368575f80fd5b505af415801561037a573d5f803e3d5ffd5b505050505b610419565b730b703e06170f72e1fea923a4e44fea2e3b406f8c635fe31d8585846103b060608801604089016107ae565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610402575f80fd5b505af4158015610414573d5f803e3d5ffd5b505050505b61042960608401604085016107ae565b6001600160a01b031661043f60208501856107ae565b6001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628360405161047991815260200190565b60405180910390a350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526104d88482610540565b61053a57604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526105309085906105e1565b61053a84826105e1565b50505050565b5f805f846001600160a01b03168460405161055b91906107d4565b5f604051808303815f865af19150503d805f8114610594576040519150601f19603f3d011682016040523d82523d5f602084013e610599565b606091505b50915091508180156105c35750805115806105c35750808060200190518101906105c39190610800565b80156105d857505f856001600160a01b03163b115b95945050505050565b5f6105f56001600160a01b03841683610647565b905080515f141580156106195750808060200190518101906106179190610800565b155b1561064257604051635274afe760e01b81526001600160a01b03841660048201526024016100d2565b505050565b606061065483835f61065b565b9392505050565b6060814710156106805760405163cd78605960e01b81523060048201526024016100d2565b5f80856001600160a01b0316848660405161069b91906107d4565b5f6040518083038185875af1925050503d805f81146106d5576040519150601f19603f3d011682016040523d82523d5f602084013e6106da565b606091505b50915091506106ea8683836106f4565b9695505050505050565b6060826107095761070482610750565b610654565b815115801561072057506001600160a01b0384163b155b1561074957604051639996b31560e01b81526001600160a01b03851660048201526024016100d2565b5080610654565b8051156107605780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f80828403608081121561078b575f80fd5b833592506060601f19820112156107a0575f80fd5b506020830190509250929050565b5f602082840312156107be575f80fd5b81356001600160a01b0381168114610654575f80fd5b5f82515f5b818110156107f357602081860181015185830152016107d9565b505f920191825250919050565b5f60208284031215610810575f80fd5b81518015158114610654575f80fdfea264697066735822122050b234d9180e6e7fa39de57c1f5895311a5240e1c3b37b00ba1e4f4d07009d8c64736f6c63430008170033", + "nonce": "0x7f", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcd853d0a9067ac6b82048294edd06e846d7fd8b1a6ba45dca874c8c8bc35cdb6", + "transactionType": "CREATE2", + "contractName": "SellCreditLimit", + "contractAddress": "0x2ffe1bf4e74f15cefe68f13e2a40a9fb041bef29", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbce14", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610892610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806313e316321461004357806329de607914610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104d0565b610077565b005b6100626100723660046104d0565b6101a6565b60408051808201909152813581526020808201906100979084018461051a565b6100a090610635565b9052335f908152600e840160209081526040909120825160048201908155838301518051805192949193600501926100db9284920190610473565b5060208281015180516100f49260018501920190610473565b5060408201518051610110916002840191602090910190610473565b5050833592507fbd9051c5eec86a3d4cd9dfb36219ffe08c560f2bef817d86833a5716d7e00cc991506101489050602084018461051a565b6101529080610715565b61015f602086018661051a565b61016d906020810190610715565b61017a602088018861051a565b610188906040810190610715565b60405161019a96959493929190610792565b60405180910390a25050565b5f6040518060400160405280835f013581526020018380602001906101cb919061051a565b6101d490610635565b905290506101e1816101ff565b6101fa57600a830154600b8401546101fa91839161021e565b505050565b80515f9015801561021857506102188260200151610283565b92915050565b82515f0361023f576040516309bfa29360e01b815260040160405180910390fd5b610249824261080d565b8351101561027457825160405162225c9d60e01b815260048101919091526024015b60405180910390fd5b6101fa836020015183836102a9565b8051515f901580156102985750602082015151155b801561021857505060400151511590565b82515115806102bb5750602083015151155b806102c95750604083015151155b156102e7576040516368a0e7c960e11b815260040160405180910390fd5b602083015151835151141580610304575060408301515183515114155b156103225760405163125b84af60e31b815260040160405180910390fd5b8251515f19905b80156103ae578451829061033e600184610820565b8151811061034e5761034e610833565b60200260200101511061037457604051633b8e6a5760e21b815260040160405180910390fd5b8451610381600183610820565b8151811061039157610391610833565b6020026020010151915080806103a690610847565b915050610329565b5082845f01515f815181106103c5576103c5610833565b6020026020010151101561041c57835180515f906103e5576103e5610833565b6020026020010151838360405163a35ff9f160e01b815260040161026b939291909283526020830191909152604082015260600190565b8351805183919061042f90600190610820565b8151811061043f5761043f610833565b6020026020010151111561046d578351805161045d90600190610820565b815181106103e5576103e5610833565b50505050565b828054828255905f5260205f209081019282156104ac579160200282015b828111156104ac578251825591602001919060010190610491565b506104b89291506104bc565b5090565b5b808211156104b8575f81556001016104bd565b5f80604083850312156104e1575f80fd5b82359150602083013567ffffffffffffffff8111156104fe575f80fd5b83016040818603121561050f575f80fd5b809150509250929050565b5f8235605e1983360301811261052e575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561056f5761056f610538565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561059e5761059e610538565b604052919050565b5f67ffffffffffffffff8211156105bf576105bf610538565b5060051b60200190565b5f82601f8301126105d8575f80fd5b813560206105ed6105e8836105a6565b610575565b8083825260208201915060208460051b87010193508684111561060e575f80fd5b602086015b8481101561062a5780358352918301918301610613565b509695505050505050565b5f60608236031215610645575f80fd5b61064d61054c565b823567ffffffffffffffff80821115610664575f80fd5b610670368387016105c9565b8352602091508185013581811115610686575f80fd5b850136601f820112610696575f80fd5b80356106a46105e8826105a6565b81815260059190911b820184019084810190368311156106c2575f80fd5b928501925b828410156106e0578335825292850192908501906106c7565b80868801525050505060408501359150808211156106fc575f80fd5b50610709368286016105c9565b60408301525092915050565b5f808335601e1984360301811261072a575f80fd5b83018035915067ffffffffffffffff821115610744575f80fd5b6020019150600581901b360382131561075b575f80fd5b9250929050565b8183525f6001600160fb1b03831115610779575f80fd5b8260051b80836020870137939093016020019392505050565b606081525f6107a560608301888a610762565b828103602084810191909152868252879181015f5b888110156107d6578335825292820192908201906001016107ba565b5084810360408601526107ea818789610762565b9b9a5050505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610218576102186107f9565b81810381811115610218576102186107f9565b634e487b7160e01b5f52603260045260245ffd5b5f81610855576108556107f9565b505f19019056fea26469706673582212203fd8a50891b1af7c9b57d7b49e4cc53433e70a5af141005d1825f5a635dfc32464736f6c63430008170033", + "nonce": "0x80", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6019f0f9990e3a49f596f9617c24ec080fda51a63c42d92431c050616c30aff1", + "transactionType": "CREATE2", + "contractName": "Initialize", + "contractAddress": "0xe38a640174c8ff20a89a272967f960538be06b44", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x4de0b1", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006141ce610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106200005a575f3560e01c80633664147f146200005e57806369777eb91462000084578063bff6b1c4146200009b578063d5630f9a14620000bf575b5f80fd5b8180156200006a575f80fd5b50620000826200007c36600462001c04565b620000d6565b005b620000826200009536600462001ecf565b62000be6565b818015620000a7575f80fd5b5062000082620000b936600462001f4d565b62000c25565b62000082620000d036600462001c04565b62000e13565b601a840180546001600160a01b0319166001600160a01b038581169182179092556017860154604080516318160ddd60e01b8152905191909316925f9184916318160ddd9160048083019260209291908290030181865afa1580156200013e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000164919062001fb7565b90505f836001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ca919062001fb7565b90505f836001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000230919062001fb7565b90505f5b868110156200071d575f856001600160a01b0316631da24f3e8a8a8581811062000262576200026262001fcf565b905060200201602081019062000279919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620002bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e2919062001fb7565b90505f876001600160a01b0316631da24f3e8b8b8681811062000309576200030962001fcf565b905060200201602081019062000320919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000363573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000389919062001fb7565b9050876001600160a01b031663366554d98b8b86818110620003af57620003af62001fcf565b9050602002016020810190620003c6919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b1580156200040c575f80fd5b505af11580156200041f573d5f803e3d5ffd5b50505050876001600160a01b0316631da24f3e8b8b8681811062000447576200044762001fcf565b90506020020160208101906200045e919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620004a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c7919062001fb7565b1562000599575f886001600160a01b0316631da24f3e8c8c87818110620004f257620004f262001fcf565b905060200201602081019062000509919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156200054c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000572919062001fb7565b604051631946864960e01b8152600481019290925260248201526044015b60405180910390fd5b866001600160a01b031663bb620c8d8b8b86818110620005bd57620005bd62001fcf565b9050602002016020810190620005d4919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b1580156200061a575f80fd5b505af11580156200062d573d5f803e3d5ffd5b505050505f82886001600160a01b0316631da24f3e8d8d8881811062000657576200065762001fcf565b90506020020160208101906200066e919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620006b1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006d7919062001fb7565b620006e3919062002001565b90508181146200071157604051631c52854b60e01b8152600481018390526024810182905260440162000590565b50505060010162000234565b505f846001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000782919062001fb7565b60198b015460158c01546040516335ea6a7560e01b81526001600160a01b0391821660048201529293505f929116906335ea6a75906024016101e060405180830381865afa158015620007d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007fd9190620020be565b610100015190505f876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000842573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000868919062001fb7565b1115620008ef57866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620008d2919062001fb7565b60405163bb552d7b60e01b81526004016200059091815260200190565b83620008fc848462002001565b146200092d57604051631d2e872d60e11b815260048101839052602481018490526044810185905260640162000590565b604051630ed1279f60e11b81523060048201526001600160a01b03821690631da24f3e90602401602060405180830381865afa15801562000970573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000996919062001fb7565b620009a2848462002001565b111562000a4157604051630ed1279f60e11b8152306004820152829084906001600160a01b03841690631da24f3e90602401602060405180830381865afa158015620009f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a16919062001fb7565b604051638a46530960e01b815260048101939093526024830191909152604482015260640162000590565b6040516370a0823160e01b815230600482015262000ac39087906001600160a01b038416906370a0823190602401602060405180830381865afa15801562000a8b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ab1919062001fb7565b6001600160a01b038416919062000e7f565b896001600160a01b03167fab961858fe69778e71d26f9f69007e56ff2c7ec7144512555f6b650266cdb3a28686896001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b2d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000b53919062001fb7565b8a6001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b90573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000bb6919062001fb7565b60408051948552602085019390935291830152606082015260800160405180910390a25050505050505050505050565b62000bf18562000ed8565b62000bfc8462000f03565b62000c078362000f9d565b62000c1282620010b9565b62000c1d816200114c565b505050505050565b835185556020840151600186015560408401516002860155606084015160038601556080840151600486015560a08401516005860180546001600160a01b0319166001600160a01b03909216919091179055825160068601556020830151600786015560408301516008860155606083015160098601556080830151600a86015560a0830151600b8601558151600c860180546001600160a01b0319166001600160a01b039092169190911790556020820151600d860180546001600160c01b0316600160c01b67ffffffffffffffff9093169290920291909117905562000d0e8582620013d3565b6040805185518152602080870151818301528683015182840152606080880151818401526080808901518185015260a0808a01516001600160a01b0390811682870152895160c08701528985015160e087015289870151610100870152898401516101208701528983015161014087015290890151610160860152875181166101808601528784015167ffffffffffffffff166101a0860152865181166101c08601529286015183166101e08501528585015183166102008501529085015182166102208401528401511661024082015290517fe780f0c31cb8a54bfde29d2834b0194e2d0e087651a1c3b2ed820abc8a015789918190036102600190a15050505050565b601a8401546001600160a01b03161562000e5157601a840154604051629624cf60e61b81526001600160a01b03909116600482015260240162000590565b6001600160a01b03831662000e795760405163de0ce17d60e01b815260040160405180910390fd5b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905262000ed390849062001a22565b505050565b6001600160a01b03811662000f005760405163de0ce17d60e01b815260040160405180910390fd5b50565b670de0b6b3a76400008160600151111562000f3a57806060015160405163fc4a516960e01b81526004016200059091815260200190565b670de0b6b3a76400008160800151111562000f7157806080015160405163fc4a516960e01b81526004016200059091815260200190565b60a08101516001600160a01b031662000f005760405163de0ce17d60e01b815260040160405180910390fd5b8051670de0b6b3a7640000111562000fcf578051604051637224fdd560e11b8152600481019190915260240162000590565b670de0b6b3a76400008160200151101562001006578060200151604051637224fdd560e11b81526004016200059091815260200190565b60208101518151116200103d57805160208201516040516334426b9b60e11b81526004810192909252602482015260440162000590565b80604001515f03620010625760405163052f91cb60e51b815260040160405180910390fd5b80608001515f03620010875760405163052f91cb60e51b815260040160405180910390fd5b80608001518160a001511162000f00578060a00151604051632431f0f760e21b81526004016200059091815260200190565b80516001600160a01b0316620010e25760405163de0ce17d60e01b815260040160405180910390fd5b805f01516001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001122573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001148919062001fb7565b5050565b80516001600160a01b0316620011755760405163de0ce17d60e01b815260040160405180910390fd5b60208101516001600160a01b0316620011a15760405163de0ce17d60e01b815260040160405180910390fd5b601281602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200120a919062002200565b60ff1611156200129b5780602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001255573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200127b919062002200565b60405163b094f61d60e01b815260ff909116600482015260240162000590565b60408101516001600160a01b0316620012c75760405163de0ce17d60e01b815260040160405180910390fd5b601281604001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200130a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001330919062002200565b60ff1611156200137b5780604001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001255573d5f803e3d5ffd5b60608101516001600160a01b0316620013a75760405163de0ce17d60e01b815260040160405180910390fd5b60808101516001600160a01b031662000f005760405163de0ce17d60e01b815260040160405180910390fd5b5f6011830155620013e760025f1962002222565b601283015580516013830180546001600160a01b03199081166001600160a01b03938416179091556020830151601485018054831691841691821790556040808501516015870180548516918616919091179055606085015160198701805490941694169390931790915581516306fdde0360e01b8152915130926306fdde03916004808301925f9291908290030181865afa1580156200148a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620014b3919081019062002266565b604051602001620014c591906200231a565b60408051601f1981840301815282825260148601546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa1580156200151c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001545919081019062002266565b60405160200162001557919062002348565b60408051601f19818403018152828252601487015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa158015620015af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620015d5919062002200565b604051620015e39062001bd3565b620015f29493929190620023a0565b604051809103905ff0801580156200160c573d5f803e3d5ffd5b506016830180546001600160a01b0319166001600160a01b0392831617905560198301546015840154604080516306fdde0360e01b81529051928416939190911691309183916306fdde03916004808201925f929091908290030181865afa1580156200167b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620016a4919081019062002266565b604051602001620016b69190620023ee565b60408051601f1981840301815282825260158801546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa1580156200170d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001736919081019062002266565b60405160200162001748919062002423565b60408051601f19818403018152828252601589015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa158015620017a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620017c6919062002200565b604051620017d49062001be1565b620017e5969594939291906200244f565b604051809103905ff080158015620017ff573d5f803e3d5ffd5b506017830180546001600160a01b0319166001600160a01b039283161790556015830154604080516306fdde0360e01b81529051309392909216916306fdde03916004808201925f929091908290030181865afa15801562001863573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200188c919081019062002266565b6040516020016200189e9190620024af565b60408051601f1981840301815282825260158601546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa158015620018f5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200191e919081019062002266565b604051602001620019309190620024e2565b60408051601f19818403018152828252601587015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa15801562001988573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019ae919062002200565b604051620019bc9062001bd3565b620019cb9493929190620023a0565b604051809103905ff080158015620019e5573d5f803e3d5ffd5b506018830180546001600160a01b03199081166001600160a01b039384161790915560809290920151601a90930180549092169216919091179055565b5f62001a386001600160a01b0384168362001a8a565b905080515f1415801562001a5f57508080602001905181019062001a5d919062002511565b155b1562000ed357604051635274afe760e01b81526001600160a01b038416600482015260240162000590565b606062001a9983835f62001aa2565b90505b92915050565b60608147101562001ac95760405163cd78605960e01b815230600482015260240162000590565b5f80856001600160a01b0316848660405162001ae6919062002532565b5f6040518083038185875af1925050503d805f811462001b22576040519150601f19603f3d011682016040523d82523d5f602084013e62001b27565b606091505b509150915062001b3986838362001b45565b925050505b9392505050565b60608262001b5e5762001b588262001ba9565b62001b3e565b815115801562001b7657506001600160a01b0384163b155b1562001ba157604051639996b31560e01b81526001600160a01b038516600482015260240162000590565b508062001b3e565b80511562001bba5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b610bae806200255083390190565b61109b80620030fe83390190565b6001600160a01b038116811462000f00575f80fd5b5f805f806060858703121562001c18575f80fd5b84359350602085013562001c2c8162001bef565b9250604085013567ffffffffffffffff8082111562001c49575f80fd5b818701915087601f83011262001c5d575f80fd5b81358181111562001c6c575f80fd5b8860208260051b850101111562001c81575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171562001cca5762001cca62001c90565b60405290565b6040516101e0810167ffffffffffffffff8111828210171562001cca5762001cca62001c90565b5f60c0828403121562001d08575f80fd5b62001d1262001ca4565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013562001d508162001bef565b60a082015292915050565b5f60c0828403121562001d6c575f80fd5b62001d7662001ca4565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b5f6040828403121562001dc5575f80fd5b6040516040810167ffffffffffffffff828210818311171562001dec5762001dec62001c90565b816040528293508435915062001e028262001bef565b908252602084013590808216821462001e19575f80fd5b506020919091015292915050565b5f60a0828403121562001e38575f80fd5b60405160a0810181811067ffffffffffffffff8211171562001e5e5762001e5e62001c90565b604052905080823562001e718162001bef565b8152602083013562001e838162001bef565b6020820152604083013562001e988162001bef565b6040820152606083013562001ead8162001bef565b6060820152608083013562001ec28162001bef565b6080919091015292915050565b5f805f805f806102a0878903121562001ee6575f80fd5b86359550602087013562001efa8162001bef565b945062001f0b886040890162001cf7565b935062001f1d88610100890162001d5b565b925062001f2f886101c0890162001db4565b915062001f4188610200890162001e27565b90509295509295509295565b5f805f805f610280868803121562001f63575f80fd5b8535945062001f76876020880162001cf7565b935062001f878760e0880162001d5b565b925062001f99876101a0880162001db4565b915062001fab876101e0880162001e27565b90509295509295909350565b5f6020828403121562001fc8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562001ff4575f80fd5b813562001b3e8162001bef565b8181038181111562001a9c57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121562002032575f80fd5b6040516020810181811067ffffffffffffffff8211171562002058576200205862001c90565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811462002085575f80fd5b919050565b805164ffffffffff8116811462002085575f80fd5b805161ffff8116811462002085575f80fd5b8051620020858162001bef565b5f6101e08284031215620020d0575f80fd5b620020da62001cd0565b620020e6848462002021565b8152620020f66020840162002065565b6020820152620021096040840162002065565b60408201526200211c6060840162002065565b60608201526200212f6080840162002065565b60808201526200214260a0840162002065565b60a08201526200215560c084016200208a565b60c08201526200216860e084016200209f565b60e08201526101006200217d818501620020b1565b9082015261012062002191848201620020b1565b90820152610140620021a5848201620020b1565b90820152610160620021b9848201620020b1565b90820152610180620021cd84820162002065565b908201526101a0620021e184820162002065565b908201526101c0620021f584820162002065565b908201529392505050565b5f6020828403121562002211575f80fd5b815160ff8116811462001b3e575f80fd5b5f826200223d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5b838110156200225e57818101518382015260200162002244565b50505f910152565b5f6020828403121562002277575f80fd5b815167ffffffffffffffff808211156200228f575f80fd5b818401915084601f830112620022a3575f80fd5b815181811115620022b857620022b862001c90565b604051601f8201601f19908116603f01168101908382118183101715620022e357620022e362001c90565b81604052828152876020848701011115620022fc575f80fd5b6200230f83602083016020880162002242565b979650505050505050565b64029b4bd32960dd1b81525f82516200233b81600585016020870162002242565b9190910160050192915050565b6139bd60f11b81525f82516200236681600285016020870162002242565b9190910160020192915050565b5f81518084526200238c81602086016020860162002242565b601f01601f19169290920160200192915050565b6001600160a01b03851681526080602082018190525f90620023c59083018662002373565b8281036040840152620023d9818662002373565b91505060ff8316606083015295945050505050565b6b029b4bd329029b1b0b632b2160a51b81525f82516200241681600c85016020870162002242565b91909101600c0192915050565b62737a6160e81b81525f82516200244281600385016020870162002242565b9190910160030192915050565b6001600160a01b03878116825286811660208301528516604082015260c0606082018190525f90620024849083018662002373565b828103608084015262002498818662002373565b91505060ff831660a0830152979650505050505050565b69029b4bd32902232b13a160b51b81525f8251620024d581600a85016020870162002242565b91909101600a0192915050565b651cde9119589d60d21b81525f82516200250481600685016020870162002242565b9190910160060192915050565b5f6020828403121562002522575f80fd5b8151801515811462001b3e575f80fd5b5f82516200254581846020870162002242565b919091019291505056fe60a060405234801562000010575f80fd5b5060405162000bae38038062000bae8339810160408190526200003391620001d4565b8282856001600160a01b0381166200006457604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006f81620000c4565b5060046200007e8382620002fb565b5060056200008d8282620002fb565b5050508060ff165f03620000b45760405163052f91cb60e51b815260040160405180910390fd5b60ff1660805250620003c7915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000137575f80fd5b81516001600160401b038082111562000154576200015462000113565b604051601f8301601f19908116603f011681019082821181831017156200017f576200017f62000113565b81604052838152602092508660208588010111156200019c575f80fd5b5f91505b83821015620001bf5785820183015181830184015290820190620001a0565b5f602085830101528094505050505092915050565b5f805f8060808587031215620001e8575f80fd5b84516001600160a01b0381168114620001ff575f80fd5b60208601519094506001600160401b03808211156200021c575f80fd5b6200022a8883890162000127565b9450604087015191508082111562000240575f80fd5b506200024f8782880162000127565b925050606085015160ff8116811462000266575f80fd5b939692955090935050565b600181811c908216806200028657607f821691505b602082108103620002a557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002f657805f5260205f20601f840160051c81016020851015620002d25750805b601f840160051c820191505b81811015620002f3575f8155600101620002de565b50505b505050565b81516001600160401b0381111562000317576200031762000113565b6200032f8162000328845462000271565b84620002ab565b602080601f83116001811462000365575f84156200034d5750858301515b5f19600386901b1c1916600185901b178555620003bf565b5f85815260208120601f198616915b82811015620003955788860151825594840194600190910190840162000374565b5085821015620003b357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6080516107ce620003e05f395f61015601526107ce5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063715018a6116100885780639dc29fac116100635780639dc29fac146101e7578063a9059cbb146101fa578063dd62ed3e1461020d578063f2fde38b14610220575f80fd5b8063715018a6146101bd5780638da5cb5b146101c557806395d89b41146101df575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f57806340c10f191461018057806370a0823114610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610233565b6040516100fe919061062f565b60405180910390f35b61011a610115366004610696565b6102c3565b60405190151581526020016100fe565b6003545b6040519081526020016100fe565b61011a61014a3660046106be565b6102dd565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61019361018e366004610696565b6102fb565b005b61012e6101a33660046106f7565b6001600160a01b03165f9081526001602052604090205490565b610193610311565b5f546040516001600160a01b0390911681526020016100fe565b6100f1610324565b6101936101f5366004610696565b610333565b61011a610208366004610696565b610345565b61012e61021b366004610710565b610362565b61019361022e3660046106f7565b610386565b60606004805461024290610741565b80601f016020809104026020016040519081016040528092919081815260200182805461026e90610741565b80156102b95780601f10610290576101008083540402835291602001916102b9565b820191905f5260205f20905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f6102e66103c8565b6102f18484846103f4565b5060019392505050565b6103036103c8565b61030d8282610456565b5050565b6103196103c8565b6103225f61048a565b565b60606005805461024290610741565b61033b6103c8565b61030d82826104d9565b5f61034e6103c8565b6103593384846102dd565b90505b92915050565b5f80546001600160a01b0383811691161461037d575f610359565b505f1992915050565b61038e6103c8565b6001600160a01b0381166103bc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6103c58161048a565b50565b5f546001600160a01b031633146103225760405163118cdaa760e01b81523360048201526024016103b3565b6001600160a01b03831661041d57604051634b637e8f60e11b81525f60048201526024016103b3565b6001600160a01b0382166104465760405163ec442f0560e01b81525f60048201526024016103b3565b610451838383610509565b505050565b6001600160a01b03821661047f5760405163ec442f0560e01b81525f60048201526024016103b3565b61030d5f8383610509565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661050257604051634b637e8f60e11b81525f60048201526024016103b3565b61030d825f835b6001600160a01b038316610533578060035f8282546105289190610779565b909155506105a39050565b6001600160a01b0383165f90815260016020526040902054818110156105855760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103b3565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b0382166105bf576003805482900390556105dd565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062291815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561065b5785810183015185820160400152820161063f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610691575f80fd5b919050565b5f80604083850312156106a7575f80fd5b6106b08361067b565b946020939093013593505050565b5f805f606084860312156106d0575f80fd5b6106d98461067b565b92506106e76020850161067b565b9150604084013590509250925092565b5f60208284031215610707575f80fd5b6103598261067b565b5f8060408385031215610721575f80fd5b61072a8361067b565b91506107386020840161067b565b90509250929050565b600181811c9082168061075557607f821691505b60208210810361077357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561035c57634e487b7160e01b5f52601160045260245ffdfea26469706673582212205120924966e94599f3094db62f3561fe9cc5562a278fc59e00fa81a3bfb1c85764736f6c6343000817003360e060405234801562000010575f80fd5b506040516200109b3803806200109b833981016040819052620000339162000216565b836001600160a01b0381166200006257604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006d81620000ee565b506001600160a01b03861615806200008c57506001600160a01b038516155b15620000ab5760405163de0ce17d60e01b815260040160405180910390fd5b6001600160a01b03808716608052851660a0526001620000cc84826200035e565b506002620000db83826200035e565b5060ff1660c052506200042a9350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811462000152575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000179575f80fd5b81516001600160401b038082111562000196576200019662000155565b604051601f8301601f19908116603f01168101908282118183101715620001c157620001c162000155565b8160405283815260209250866020858801011115620001de575f80fd5b5f91505b83821015620002015785820183015181830184015290820190620001e2565b5f602085830101528094505050505092915050565b5f805f805f8060c087890312156200022c575f80fd5b865162000239816200013d565b60208801519096506200024c816200013d565b60408801519095506200025f816200013d565b60608801519094506001600160401b03808211156200027c575f80fd5b6200028a8a838b0162000169565b94506080890151915080821115620002a0575f80fd5b50620002af89828a0162000169565b92505060a087015160ff81168114620002c6575f80fd5b809150509295509295509295565b600181811c90821680620002e957607f821691505b6020821081036200030857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200035957805f5260205f20601f840160051c81016020851015620003355750805b601f840160051c820191505b8181101562000356575f815560010162000341565b50505b505050565b81516001600160401b038111156200037a576200037a62000155565b62000392816200038b8454620002d4565b846200030e565b602080601f831160018114620003c8575f8415620003b05750858301515b5f19600386901b1c1916600185901b17855562000422565b5f85815260208120601f198616915b82811015620003f857888601518255948401946001909101908401620003d7565b50858210156200041657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a05160c051610c46620004555f395f6101a101525f6108ad01525f6108d70152610c465ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063b1bf962d1161006e578063b1bf962d1461023a578063bb620c8d14610242578063bbf44f3314610255578063dd62ed3e1461025d578063f2fde38b14610270575f80fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b411461021f578063a9059cbb14610227575f80fd5b806323b872dd116100d957806323b872dd14610189578063313ce5671461019c578063366554d9146101d557806370a08231146101ea575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b5780631da24f3e14610161575b5f80fd5b610112610283565b60405161011f9190610a75565b60405180910390f35b61013b610136366004610adc565b61030f565b604051901515815260200161011f565b610153610329565b60405190815260200161011f565b61015361016f366004610b04565b6001600160a01b03165f9081526004602052604090205490565b61013b610197366004610b1d565b610340565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161011f565b6101e86101e3366004610adc565b610568565b005b6101536101f8366004610b04565b6106fb565b6101e8610722565b5f546040516001600160a01b03909116815260200161011f565b610112610735565b61013b610235366004610adc565b610742565b600354610153565b6101e8610250366004610adc565b61075d565b610153610896565b61015361026b366004610b56565b610942565b6101e861027e366004610b04565b610966565b6001805461029090610b87565b80601f01602080910402602001604051908101604052809291908181526020018280546102bc90610b87565b80156103075780601f106102de57610100808354040283529160200191610307565b820191905f5260205f20905b8154815290600101906020018083116102ea57829003601f168201915b505050505081565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f61033b61033660035490565b6109a3565b905090565b5f6103496109c2565b6001600160a01b03841661037757604051634b637e8f60e11b81525f60048201526024015b60405180910390fd5b6001600160a01b0383166103a05760405163ec442f0560e01b81525f600482015260240161036e565b5f6103bf836b033b2e3c9fd0803ce80000006103ba610896565b6109ee565b6001600160a01b0386165f9081526004602052604090205490915081111561041c57846103eb866106fb565b60405163391434e360e21b81526001600160a01b03909216600483015260248201526044810184905260640161036e565b6001600160a01b0385165f9081526004602052604081208054839290610443908490610bd3565b90915550506001600160a01b0384165f908152600460205260408120805483929061046f908490610be6565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104bb91815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba8560405161050891815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee38360405161055591815260200190565b60405180910390a3506001949350505050565b6105706109c2565b6001600160a01b03821661059957604051634b637e8f60e11b81525f600482015260240161036e565b5f6105a3826109a3565b6001600160a01b0384165f9081526004602052604090205490915082111561060057826105cf846106fb565b60405163391434e360e21b81526001600160a01b03909216600483015260248201526044810182905260640161036e565b6001600160a01b0383165f9081526004602052604081208054849290610627908490610bd3565b90915550506003805483900390556040518181525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040518181525f906001600160a01b038516907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281525f906001600160a01b038516907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020015b60405180910390a3505050565b6001600160a01b0381165f9081526004602052604081205461071c906109a3565b92915050565b61072a6109c2565b6107335f610a02565b565b6002805461029090610b87565b5f61074b6109c2565b610756338484610340565b9392505050565b6107656109c2565b6001600160a01b03821661078e5760405163ec442f0560e01b81525f600482015260240161036e565b8060035f82825461079f9190610be6565b90915550506001600160a01b0382165f9081526004602052604081208054830190556107ca826109a3565b9050826001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161081191815260200190565b60405180910390a36040518181526001600160a01b038416905f907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281526001600160a01b038416905f907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020016106ee565b60405163d15e005360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa15801561091e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033b9190610bf9565b5f80546001600160a01b0383811691161461095d575f610756565b505f1992915050565b61096e6109c2565b6001600160a01b03811661099757604051631e4fbdf760e01b81525f600482015260240161036e565b6109a081610a02565b50565b5f61071c826109b0610896565b6b033b2e3c9fd0803ce80000006109ee565b5f546001600160a01b031633146107335760405163118cdaa760e01b815233600482015260240161036e565b5f6109fa848484610a51565b949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f825f190484118302158202610a6e5763ad251c275f526004601cfd5b5091020490565b5f602080835283518060208501525f5b81811015610aa157858101830151858201604001528201610a85565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ad7575f80fd5b919050565b5f8060408385031215610aed575f80fd5b610af683610ac1565b946020939093013593505050565b5f60208284031215610b14575f80fd5b61075682610ac1565b5f805f60608486031215610b2f575f80fd5b610b3884610ac1565b9250610b4660208501610ac1565b9150604084013590509250925092565b5f8060408385031215610b67575f80fd5b610b7083610ac1565b9150610b7e60208401610ac1565b90509250929050565b600181811c90821680610b9b57607f821691505b602082108103610bb957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561071c5761071c610bbf565b8082018082111561071c5761071c610bbf565b5f60208284031215610c09575f80fd5b505191905056fea26469706673582212201500243b44948fca3a1d90b525c575dbecb5a06a617f12c5c3e2d204a4e75bcb64736f6c63430008170033a26469706673582212202d39befa30007df884d60b525b01477cb4b9cc7d0b46987ea3398744bcac3fcf64736f6c63430008170033", + "nonce": "0x81", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x379781a1a43c5de33d825897efc44ccbca6ce33903d320c25f2cca5456dd633a", + "transactionType": "CREATE2", + "contractName": "LoanLibrary", + "contractAddress": "0xfeb81e6c614fb7d53b2f9a1ef67459b55b3d84dc", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9ab27", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061074e610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006b575f3560e01c80632a349f701461006f5780633978289f1461009557806345ffd36d146100a85780637d62a7e0146100bb5780639930537e146100db578063e6541090146100ee575b5f80fd5b61008261007d3660046105c1565b610101565b6040519081526020015b60405180910390f35b6100826100a3366004610635565b610227565b6100826100b6366004610655565b61026d565b6100ce6100c9366004610635565b61037d565b60405161008c91906106bc565b6100826100e9366004610635565b610478565b6100826100fc366004610635565b6104b7565b5f80610111848460600151610478565b601885015481546040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa158015610161573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018591906106e2565b601686015483546040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa1580156101d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f991906106e2565b9050811561021a576102108186604001518461051b565b9350505050610221565b5f93505050505b92915050565b5f6102328383610527565b1561024c57505f8181526010830160205260409020610221565b6040516310cc79db60e21b8152600481018390526024015b60405180910390fd5b601882015481516040516370a0823160e01b81526001600160a01b0391821660048201525f92839216906370a0823190602401602060405180830381865afa1580156102bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102df91906106e2565b601685015484516040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa15801561032f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035391906106e2565b905081156103735761036a8185602001518461051b565b92505050610221565b5f92505050610221565b5f818152600f830160209081526040808320815160808101835281546001600160a01b031681526001820154938101939093526002810154918301919091526003015460608201526103cf8484610527565b1561041d576103de84846104b7565b6040805160808101825282546001600160a01b031681526001830154602082015260028301549181019190915260039091015460608201529050610444565b601184015483106104445760405163088e88a760e21b815260048101849052602401610264565b80602001515f03610459576002915050610221565b806040015142111561046f576001915050610221565b5f915050610221565b60118201545f9082101561049b57505f818152600f830160205260409020610221565b60405163037a107f60e01b815260048101839052602401610264565b5f806104c38484610227565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff161515602082015260018301549181019190915260029091015460608201819052909150610513908590610478565b949350505050565b5f61051384848461054d565b5f61053460025f196106f9565b82101580156105465750601283015482105b9392505050565b5f825f19048411830215820261056a5763ad251c275f526004601cfd5b5091020490565b6040516080810167ffffffffffffffff811182821017156105a057634e487b7160e01b5f52604160045260245ffd5b60405290565b80356001600160a01b03811681146105bc575f80fd5b919050565b5f8082840360a08112156105d3575f80fd5b833592506080601f19820112156105e8575f80fd5b506105f1610571565b6105fd602085016105a6565b815260408401358015158114610611575f80fd5b60208201526060848101356040830152608090940135938101939093525092909150565b5f8060408385031215610646575f80fd5b50508035926020909101359150565b5f8082840360a0811215610667575f80fd5b833592506080601f198201121561067c575f80fd5b50610685610571565b610691602085016105a6565b8152604084013560208201526060840135604082015260808401356060820152809150509250929050565b60208101600383106106dc57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f602082840312156106f2575f80fd5b5051919050565b5f8261071357634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220225984e0ef73b7e1c7a3bf0797b12e184d2889b0cba117cf87bb39273511ed4a64736f6c63430008170033", + "nonce": "0x82", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xfc921f6ef492366e0696a8b5f91833fb0fd7314cbac241b34363b90902c74e0d", + "transactionType": "CREATE2", + "contractName": "SetUserConfiguration", + "contractAddress": "0x870b4573f23ec6490247a500603238e7754d3ebe", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x878db", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610648610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063603ed05b14610043578063a9fa1f2814610058575b5f80fd5b6100566100513660046104c1565b610077565b005b818015610063575f80fd5b506100566100723660046104c1565b61029a565b5f5b610086606083018361050b565b9050811015610295575f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc633978289f856100b8606087018761050b565b868181106100c8576100c8610558565b905060200201356040518363ffffffff1660e01b81526004016100f5929190918252602082015260400190565b602060405180830381865af4158015610110573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610134919061056c565b80549091506001600160a01b0316331461019157610155606084018461050b565b8381811061016557610165610558565b905060200201356040516310cc79db60e21b815260040161018891815260200190565b60405180910390fd5b5f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc637d62a7e0866101ba606088018861050b565b878181106101ca576101ca610558565b905060200201356040518363ffffffff1660e01b81526004016101f7929190918252602082015260400190565b602060405180830381865af4158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610597565b600281111561024757610247610583565b1461028c57610259606084018461050b565b8381811061026957610269610558565b9050602002013560405163225e181360e01b815260040161018891815260200190565b50600101610079565b505050565b335f908152600e8301602090815260409182902083356008820155916102c5919084019084016105bc565b60098201805460ff19169115159190911790555f5b6102e7606084018461050b565b9050811015610451575f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc633978289f86610319606088018861050b565b8681811061032957610329610558565b905060200201356040518363ffffffff1660e01b8152600401610356929190918252602082015260400190565b602060405180830381865af4158015610371573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610395919061056c565b90506103a760608501604086016105bc565b8154901515600160a01b0260ff60a01b198216811783556001600160a01b039081169116176103d9606086018661050b565b848181106103e9576103e9610558565b905060200201357f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf268360010154845f0160149054906101000a900460ff166040516104409291909182521515602082015260400190565b60405180910390a3506001016102da565b5061046260608301604084016105bc565b151561047460408401602085016105bc565b151583357f58b25bc3bfa6575cee096feac88aa4f7431042706e375790630012de2bf81dfe6104a6606087018761050b565b6040516104b49291906105db565b60405180910390a4505050565b5f80604083850312156104d2575f80fd5b82359150602083013567ffffffffffffffff8111156104ef575f80fd5b830160808186031215610500575f80fd5b809150509250929050565b5f808335601e19843603018112610520575f80fd5b83018035915067ffffffffffffffff82111561053a575f80fd5b6020019150600581901b3603821315610551575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561057c575f80fd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156105a7575f80fd5b8151600381106105b5575f80fd5b9392505050565b5f602082840312156105cc575f80fd5b813580151581146105b5575f80fd5b602080825281018290525f6001600160fb1b038311156105f9575f80fd5b8260051b8085604085013791909101604001939250505056fea2646970667358221220e0644d16576bc139b00006b187b6996dca5e3a4e319ac04f7cf5d94194d87c3a64736f6c63430008170033", + "nonce": "0x83", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x02ef53f7d37cd9356a4aa9ceed345c42d699021eed41e5e881e63c838d420bec", + "transactionType": "CREATE2", + "contractName": "PriceFeedFactoryLibrary", + "contractAddress": "0x5d4b12e547b462a16b2afd3ca821c77da986df97", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3850c8", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000612cdc610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c806328b6d97214610038575b5f80fd5b818015610043575f80fd5b5061005761005236600461011c565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f81604051610081906100ab565b61008b91906101d5565b604051809103905ff0801580156100a4573d5f803e3d5ffd5b5092915050565b6129f3806102b483390190565b604051610140810167ffffffffffffffff811182821017156100e857634e487b7160e01b5f52604160045260245ffd5b60405290565b80356001600160a01b0381168114610104575f80fd5b919050565b803563ffffffff81168114610104575f80fd5b5f610140828403121561012d575f80fd5b6101356100b8565b61013e836100ee565b815261014c60208401610109565b602082015261015d60408401610109565b604082015261016e606084016100ee565b606082015261017f608084016100ee565b608082015261019060a084016100ee565b60a08201526101a160c084016100ee565b60c082015260e083013560e08201526101008084013581830152506101206101ca8185016100ee565b908201529392505050565b81516001600160a01b03168152610140810160208301516101fe602084018263ffffffff169052565b506040830151610216604084018263ffffffff169052565b50606083015161023160608401826001600160a01b03169052565b50608083015161024c60808401826001600160a01b03169052565b5060a083015161026760a08401826001600160a01b03169052565b5060c083015161028260c08401826001600160a01b03169052565b5060e083810151908301526101008084015190830152610120928301516001600160a01b031692909101919091529056fe60e060405234801561000f575f80fd5b506040516129f33803806129f383398101604081905261002e91610205565b8061012001516040516100409061017b565b6001600160a01b039091168152602001604051809103905ff080158015610069573d5f803e3d5ffd5b506001600160a01b031660805260a081015160c082015160e08301516101008401516040516012949392919061009e90610188565b9485526001600160a01b0393841660208601529290911660408401526060830152608082015260a001604051809103905ff0801580156100e0573d5f803e3d5ffd5b506001600160a01b031660a05260608101516080820151825160208401516040808601519051601295949392919061011790610195565b9586526001600160a01b03948516602087015292841660408601529216606084015263ffffffff91821660808401521660a082015260c001604051809103905ff080158015610168573d5f803e3d5ffd5b506001600160a01b031660c052506102be565b6102ed8061080483390190565b610a7580610af183390190565b61148d8061156683390190565b60405161014081016001600160401b03811182821017156101d157634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b03811681146101ed575f80fd5b919050565b805163ffffffff811681146101ed575f80fd5b5f6101408284031215610216575f80fd5b61021e6101a2565b610227836101d7565b8152610235602084016101f2565b6020820152610246604084016101f2565b6040820152610257606084016101d7565b6060820152610268608084016101d7565b608082015261027960a084016101d7565b60a082015261028a60c084016101d7565b60c082015260e083015160e08201526101008084015181830152506101206102b38185016101d7565b908201529392505050565b60805160a05160c0516104ec6103185f395f818160dc015261035901525f818161014201528181610167015281816101ed015281816102db015281816103bb015261041801525f8181610113015261026e01526104ec5ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c806398d5fdca1161006357806398d5fdca146100fe578063999b93af14610106578063a6601cf21461010e578063ce52a6b414610135578063d8a2b7f01461013d575f80fd5b80630b08424914610094578063313ce567146100af5780635001f3b5146100b757806395679855146100d7575b5f80fd5b61009c610164565b6040519081526020015b60405180910390f35b61009c601281565b6100bf6101ea565b6040516001600160a01b0390911681526020016100a6565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b61009c61026b565b6100bf6103b8565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b61009c610415565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630b0842496040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e59190610472565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9692bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610247573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e59190610489565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec73052b6040518163ffffffff1660e01b81526004015f6040518083038186803b1580156102c3575f80fd5b505afa1580156102d5573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610353575060408051601f3d908101601f1916820190925261035091810190610472565b60015b6103b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166351f482df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610247573d5f803e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce52a6b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b5f60208284031215610482575f80fd5b5051919050565b5f60208284031215610499575f80fd5b81516001600160a01b03811681146104af575f80fd5b939250505056fea264697066735822122021206a6792f6a36105867f601c05e49b16482df45188cac0be6b10123043cde564736f6c6343000817003360a060405234801561000f575f80fd5b506040516102ed3803806102ed83398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b60805161025e61008f5f395f8181603d015281816087015260b8015261025e5ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063a726470514610038578063ec73052b1461007b575b5f80fd5b61005f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610083610085565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610197575f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610112573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013691906101b7565b50509250925050805f148061014b5750816001145b1561016957604051634a3b18b560e01b815260040160405180910390fd5b610e106101768242610203565b1161019457604051631e71412560e01b815260040160405180910390fd5b50505b565b805169ffffffffffffffffffff811681146101b2575f80fd5b919050565b5f805f805f60a086880312156101cb575f80fd5b6101d486610199565b94506020860151935060408601519250606086015191506101f760808701610199565b90509295509295909350565b8181038181111561022257634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220ce11f27f71fede47ebcc8f053580b792985e67a8b7425106231a5d1b7f6169b064736f6c634300081700336101206040526012608052348015610015575f80fd5b50604051610a75380380610a7583398101604081905261003491610279565b6001600160a01b038416158061005157506001600160a01b038316155b1561006f5760405163de0ce17d60e01b815260040160405180910390fd5b81158061007a575080155b15610098576040516373f9226b60e11b815260040160405180910390fd5b60808590526001600160a01b0380851660a052831660c081905260e08390526101008290526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156100f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011a91906102c4565b60ff1660a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017f91906102c4565b60ff161461020d5760c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e991906102c4565b60405163b094f61d60e01b815260ff90911660048201526024015b60405180910390fd5b60c0516001600160a01b031660a0516001600160a01b031603610254578082146102545760405163b2dd8c5960e01b81526004810183905260248101829052604401610204565b50505050506102eb565b80516001600160a01b0381168114610274575f80fd5b919050565b5f805f805f60a0868803121561028d575f80fd5b8551945061029d6020870161025e565b93506102ab6040870161025e565b6060870151608090970151959894975095949392505050565b5f602082840312156102d4575f80fd5b815160ff811681146102e4575f80fd5b9392505050565b60805160a05160c05160e051610100516107036103725f395f8181610138015261036b01525f818160690152818161029001526102f601525f818160ca0152818161015d015261034a01525f818161011101528181610187015281816101b60152818161026f01526102d501525f818160a301528181610244015261031f01526107035ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80630b08424914610064578063313ce5671461009e57806351f482df146100c557806398d5fdca14610104578063b9692bd21461010c578063ce52a6b414610133575b5f80fd5b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6100ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610095565b61008b61015a565b6100ec7f000000000000000000000000000000000000000000000000000000000000000081565b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036102cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610210573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023491906104e6565b61023f90600a610601565b61026a7f0000000000000000000000000000000000000000000000000000000000000000600a61060f565b6102b47f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b6102be919061061a565b6102c89190610631565b905090565b6102c861031a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b6103457f0000000000000000000000000000000000000000000000000000000000000000600a61060f565b61038f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b610485565b5f805f846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156103d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f7919061066e565b509350509250505f821361043557604051633e8ca01160e21b81526001600160a01b0386166004820152602481018390526044015b60405180910390fd5b8361044082426106ba565b111561047157604051632c4f4f3160e21b81526001600160a01b03861660048201526024810182905260440161042c565b61047a82610499565b925050505b92915050565b5f6104918484846104c2565b949350505050565b5f808212156104be57604051635467221960e11b81526004810183905260240161042c565b5090565b5f825f1904841183021582026104df5763ad251c275f526004601cfd5b5091020490565b5f602082840312156104f6575f80fd5b815160ff81168114610506575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561055b57815f19048211156105415761054161050d565b8085161561054e57918102915b93841c9390800290610526565b509250929050565b5f826105715750600161047f565b8161057d57505f61047f565b8160018114610593576002811461059d576105b9565b600191505061047f565b60ff8411156105ae576105ae61050d565b50506001821b61047f565b5060208310610133831016604e8410600b84101617156105dc575081810a61047f565b6105e68383610521565b805f19048211156105f9576105f961050d565b029392505050565b5f61050660ff841683610563565b5f6105068383610563565b808202811582820484141761047f5761047f61050d565b5f8261064b57634e487b7160e01b5f52601260045260245ffd5b500490565b805169ffffffffffffffffffff81168114610669575f80fd5b919050565b5f805f805f60a08688031215610682575f80fd5b61068b86610650565b94506020860151935060408601519250606086015191506106ae60808701610650565b90509295509295909350565b8181038181111561047f5761047f61050d56fea26469706673582212200e37a22716937023f4575e9c024000dd1abcae02418479387bc997479964f8dc64736f6c6343000817003361014060405234801562000011575f80fd5b506040516200148d3803806200148d8339810160408190526200003491620002e8565b6001600160a01b03851615806200005257506001600160a01b038416155b806200006557506001600160a01b038316155b15620000845760405163de0ce17d60e01b815260040160405180910390fd5b836001600160a01b0316856001600160a01b031603620000c75760405163276b4fc160e01b81526001600160a01b03851660048201526024015b60405180910390fd5b8163ffffffff165f03620000ee57604051631202386d60e21b815260040160405180910390fd5b8063ffffffff165f036200011557604051633afaae6560e11b815260040160405180910390fd5b60808690526001600160a01b0380861660a05284811660c052831660e081815263ffffffff8085166101005283166101205260408051633850c7bd60e01b815290515f9392633850c7bd92600480820193918290030181865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a5919062000376565b50505093505050505f620001e3620001d08563ffffffff168563ffffffff166200026360201b60201c565b620001dd9060016200041e565b62000283565b90508061ffff168261ffff161015620002555760e0516040516332148f6760e01b815261ffff831660048201526001600160a01b03909116906332148f67906024015f604051808303815f87803b1580156200023d575f80fd5b505af115801562000250573d5f803e3d5ffd5b505050505b505050505050505062000444565b5f8162000277576365244e4e5f526004601cfd5b50808206151591040190565b5f61ffff821115620002b3576040516306dfcc6560e41b81526010600482015260248101839052604401620000be565b5090565b6001600160a01b0381168114620002cc575f80fd5b50565b805163ffffffff81168114620002e3575f80fd5b919050565b5f805f805f8060c08789031215620002fe575f80fd5b8651955060208701516200031281620002b7565b60408801519095506200032581620002b7565b60608801519094506200033881620002b7565b92506200034860808801620002cf565b91506200035860a08801620002cf565b90509295509295509295565b805161ffff81168114620002e3575f80fd5b5f805f805f805f60e0888a0312156200038d575f80fd5b87516200039a81620002b7565b8097505060208801518060020b8114620003b2575f80fd5b9550620003c26040890162000364565b9450620003d26060890162000364565b9350620003e26080890162000364565b925060a088015160ff81168114620003f8575f80fd5b60c089015190925080151581146200040e575f80fd5b8091505092959891949750929550565b808201808211156200043e57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e0516101005161012051610fd2620004bb5f395f60c701525f818161013801526101d801525f818161018e01526101b701525f81816083015281816102be01526102e601525f818161016701528181610205015261029d01525f818161010301526103740152610fd25ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638107e133116100585780638107e1331461013357806398d5fdca1461015a578063c55dae6314610162578063f55ebd2a14610189575f80fd5b8063217a4b701461007e578063233dedf1146100c2578063313ce567146100fe575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b9565b6101257f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100b9565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6101256101b0565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f806101fc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103b6565b5090505f6102937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102839190610afd565b61028e90600a610c13565b6105f5565b90505f6102e283837f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061062c565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103649190610afd565b61036f90600a610c13565b61039a7f0000000000000000000000000000000000000000000000000000000000000000600a610c21565b6103a49083610c2c565b6103ae9190610c57565b935050505090565b5f808263ffffffff165f036103f75760405162461bcd60e51b8152602060048201526002602482015261042560f41b60448201526064015b60405180910390fd5b6040805160028082526060820183525f9260208301908036833701905050905083815f8151811061042a5761042a610c7e565b602002602001019063ffffffff16908163ffffffff16815250505f8160018151811061045857610458610c7e565b602002602001019063ffffffff16908163ffffffff16815250505f80866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016104a09190610c92565b5f60405180830381865afa1580156104ba573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104e19190810190610daf565b915091505f825f815181106104f8576104f8610c7e565b60200260200101518360018151811061051357610513610c7e565b60200260200101516105259190610e73565b90505f825f8151811061053a5761053a610c7e565b60200260200101518360018151811061055557610555610c7e565b60200260200101516105679190610ea0565b905061057963ffffffff891683610ec7565b96505f8260060b12801561059e575061059863ffffffff891683610f03565b60060b15155b156105b157866105ad81610f24565b9750505b5f6105c96001600160a01b0363ffffffff8b16610f45565b90506105e6640100000000600160c01b03602084901b1682610f77565b96505050505050509250929050565b5f6001600160801b03821115610628576040516306dfcc6560e41b815260806004820152602481018390526044016103ee565b5090565b5f8061063786610737565b90506001600160801b036001600160a01b038216116106bc575f6106646001600160a01b03831680610c2c565b9050836001600160a01b0316856001600160a01b03161061069c57610697600160c01b876001600160801b031683610a52565b6106b4565b6106b481876001600160801b0316600160c01b610a52565b92505061072e565b5f6106da6001600160a01b0383168068010000000000000000610a52565b9050836001600160a01b0316856001600160a01b0316106107125761070d600160801b876001600160801b031683610a52565b61072a565b61072a81876001600160801b0316600160801b610a52565b9250505b50949350505050565b5f805f8360020b1261074c578260020b610753565b8260020b5f035b9050620d89e8811115610779576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f0361078e57600160801b6107a0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156107d4576ffff97272373d413259a46990580e213a0260801c5b60048216156107f3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610812576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610831576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610850576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561086f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561088e576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156108ae576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156108ce576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156108ee576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561090e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561092e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561094e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561096e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561098e576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156109af576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156109cf576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156109ee576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610a0b576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315610a2a57805f1981610a2657610a26610c43565b0490505b640100000000810615610a3e576001610a40565b5f5b60ff16602082901c0192505050919050565b5f80805f19858709858702925082811083820303915050805f03610a86575f8411610a7b575f80fd5b508290049050610af6565b808411610a91575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b5f60208284031215610b0d575f80fd5b815160ff81168114610af6575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610b6b57815f1904821115610b5157610b51610b1d565b80851615610b5e57918102915b93841c9390800290610b36565b509250929050565b5f82610b8157506001610c0d565b81610b8d57505f610c0d565b8160018114610ba35760028114610bad57610bc9565b6001915050610c0d565b60ff841115610bbe57610bbe610b1d565b50506001821b610c0d565b5060208310610133831016604e8410600b8410161715610bec575081810a610c0d565b610bf68383610b31565b805f1904821115610c0957610c09610b1d565b0290505b92915050565b5f610af660ff841683610b73565b5f610af68383610b73565b8082028115828204841417610c0d57610c0d610b1d565b634e487b7160e01b5f52601260045260245ffd5b5f82610c6557610c65610c43565b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f9190848201906040850190845b81811015610ccf57835163ffffffff1683529284019291840191600101610cad565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d0457610d04610c6a565b604052919050565b5f67ffffffffffffffff821115610d2557610d25610c6a565b5060051b60200190565b5f82601f830112610d3e575f80fd5b81516020610d53610d4e83610d0c565b610cdb565b8083825260208201915060208460051b870101935086841115610d74575f80fd5b602086015b84811015610da45780516001600160a01b0381168114610d97575f80fd5b8352918301918301610d79565b509695505050505050565b5f8060408385031215610dc0575f80fd5b825167ffffffffffffffff80821115610dd7575f80fd5b818501915085601f830112610dea575f80fd5b81516020610dfa610d4e83610d0c565b82815260059290921b84018101918181019089841115610e18575f80fd5b948201945b83861015610e445785518060060b8114610e35575f80fd5b82529482019490820190610e1d565b91880151919650909350505080821115610e5c575f80fd5b50610e6985828601610d2f565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610c0d57610c0d610b1d565b6001600160a01b03828116828216039080821115610ec057610ec0610b1d565b5092915050565b5f8160060b8360060b80610edd57610edd610c43565b667fffffffffffff1982145f1982141615610efa57610efa610b1d565b90059392505050565b5f8260060b80610f1557610f15610c43565b808360060b0791505092915050565b5f8160020b627fffff198103610f3c57610f3c610b1d565b5f190192915050565b6001600160c01b03828116828216818102831692918115828504821417610f6e57610f6e610b1d565b50505092915050565b5f6001600160c01b0383811680610f9057610f90610c43565b9216919091049291505056fea2646970667358221220115ee402a8564b5c9e83f4a5b9a3e910a0432f5334f174021d626dee8bf1adec64736f6c63430008170033a264697066735822122023f36d2582b175a3a99b471415141cf488487ee6b4866613930bcbdb4552242064736f6c63430008170033", + "nonce": "0x84", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf7e45e9af14b76bdc31077268ca42dcfb95006a0aa83819477375bdc7176ce25", + "transactionType": "CREATE2", + "contractName": "NonTransferrableScaledTokenV1_5FactoryLibrary", + "contractAddress": "0xdc8504a256093b3ea224415afed3c6f401eabba1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3bed73", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000612f7b610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80634299eb2d14610038575b5f80fd5b818015610043575f80fd5b506100576100523660046102aa565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f60405161008090610277565b604051809103905ff080158015610099573d5f803e3d5ffd5b5030848487866001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156100d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101009190810190610328565b60405160200161011091906103d0565b604051602081830303815290604052876001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561015a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101819190810190610328565b6040516020016101919190610414565b604051602081830303815290604052886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610200919061043d565b604051602401610216979695949392919061048f565b60408051601f198184030181529181526020820180516001600160e01b0316631f0cbe6160e01b1790525161024a90610285565b6102559291906104f4565b604051809103905ff08015801561026e573d5f803e3d5ffd5b50949350505050565b612636806200052083390190565b6103f08062002b5683390190565b6001600160a01b03811681146102a7575f80fd5b50565b5f805f606084860312156102bc575f80fd5b83356102c781610293565b925060208401356102d781610293565b915060408401356102e781610293565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015610320578181015183820152602001610308565b50505f910152565b5f60208284031215610338575f80fd5b815167ffffffffffffffff8082111561034f575f80fd5b818401915084601f830112610362575f80fd5b815181811115610374576103746102f2565b604051601f8201601f19908116603f0116810190838211818310171561039c5761039c6102f2565b816040528281528760208487010111156103b4575f80fd5b6103c5836020830160208801610306565b979650505050505050565b6b029b4bd329029b1b0b632b2160a51b81525f82516103f681600c850160208701610306565b66202876312e352960c81b600c939091019283015250601301919050565b61736160f01b81525f8251610430816002850160208701610306565b9190910160020192915050565b5f6020828403121561044d575f80fd5b815160ff8116811461045d575f80fd5b9392505050565b5f815180845261047b816020860160208601610306565b601f01601f19169290920160200192915050565b6001600160a01b038881168252878116602083015286811660408301528516606082015260e0608082018190525f906104ca90830186610464565b82810360a08401526104dc8186610464565b91505060ff831660c083015298975050505050505050565b6001600160a01b03831681526040602082018190525f9061051790830184610464565b94935050505056fe60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612536620001005f395f8181611592015281816115bb01526116ff01526125365ff3fe6080604052600436106101af575f3560e01c80638340f549116100e7578063bb620c8d11610087578063dd62ed3e11610062578063dd62ed3e146104ac578063e30c3978146104cb578063f2fde38b146104df578063fa7a5b10146104fe575f80fd5b8063bb620c8d1461045a578063bbf44f3314610479578063d9caed121461048d575f80fd5b80639c269f30116100c25780639c269f30146103d8578063a9059cbb146103f7578063ad3cb1cc14610416578063b1bf962d14610446575f80fd5b80638340f549146103915780638da5cb5b146103b057806395d89b41146103c4575f80fd5b8063313ce5671161015257806352d1902d1161012d57806352d1902d1461033657806370a082311461034a578063715018a61461036957806379ba50971461037d575f80fd5b8063313ce567146102d9578063366554d9146103045780634f1ef28614610323575f80fd5b80631da24f3e1161018d5780631da24f3e1461022e5780631f0cbe611461026257806323b872dd146102835780632495a599146102a2575f80fd5b806306fdde03146101b3578063095ea7b3146101dd57806318160ddd1461020c575b5f80fd5b3480156101be575f80fd5b506101c761051c565b6040516101d49190611e71565b60405180910390f35b3480156101e8575f80fd5b506101fc6101f7366004611eb7565b6105a8565b60405190151581526020016101d4565b348015610217575f80fd5b506102206105c2565b6040519081526020016101d4565b348015610239575f80fd5b50610220610248366004611ee1565b6001600160a01b03165f9081526007602052604090205490565b34801561026d575f80fd5b5061028161027c366004611fcb565b6105d9565b005b34801561028e575f80fd5b506101fc61029d36600461208c565b6107af565b3480156102ad575f80fd5b506002546102c1906001600160a01b031681565b6040516001600160a01b0390911681526020016101d4565b3480156102e4575f80fd5b506005546102f29060ff1681565b60405160ff90911681526020016101d4565b34801561030f575f80fd5b5061028161031e366004611eb7565b610a59565b6102816103313660046120ca565b610aef565b348015610341575f80fd5b50610220610b0a565b348015610355575f80fd5b50610220610364366004611ee1565b610b25565b348015610374575f80fd5b50610281610b4c565b348015610388575f80fd5b50610281610b5f565b34801561039c575f80fd5b506102816103ab36600461208c565b610ba7565b3480156103bb575f80fd5b506102c1610e41565b3480156103cf575f80fd5b506101c7610e75565b3480156103e3575f80fd5b506001546102c1906001600160a01b031681565b348015610402575f80fd5b506101fc610411366004611eb7565b610e82565b348015610421575f80fd5b506101c7604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610451575f80fd5b50600654610220565b348015610465575f80fd5b50610281610474366004611eb7565b610f16565b348015610484575f80fd5b50610220610fa8565b348015610498575f80fd5b506102816104a736600461208c565b61101a565b3480156104b7575f80fd5b506102206104c636600461212a565b611284565b3480156104d6575f80fd5b506102c1611303565b3480156104ea575f80fd5b506102816104f9366004611ee1565b61132b565b348015610509575f80fd5b505f546102c1906001600160a01b031681565b6003805461052990612161565b80601f016020809104026020016040519081016040528092919081815260200182805461055590612161565b80156105a05780601f10610577576101008083540402835291602001916105a0565b820191905f5260205f20905b81548152906001019060200180831161058357829003601f168201915b505050505081565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f6105d46105cf60065490565b6113b0565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561061e5750825b90505f8267ffffffffffffffff16600114801561063a5750303b155b905081158015610648575080155b156106665760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561069057845460ff60401b1916600160401b1785555b610699896113cf565b6106a16113e0565b6106a96113e0565b6001600160a01b038c1615806106c657506001600160a01b038b16155b806106d857506001600160a01b038a16155b156106f65760405163de0ce17d60e01b815260040160405180910390fd5b5f80546001600160a01b03808f166001600160a01b031992831617909255600180548e841690831617905560028054928d1692909116919091179055600361073e89826121e4565b50600461074b88826121e4565b506005805460ff191660ff881617905583156107a157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f80546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa1580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906122a0565b61083d5760405163183e22b760e21b81523360048201526024015b60405180910390fd5b6001600160a01b03841661086657604051634b637e8f60e11b81525f6004820152602401610834565b6001600160a01b03831661088f5760405163ec442f0560e01b81525f6004820152602401610834565b5f6108ae836b033b2e3c9fd0803ce80000006108a9610fa8565b6113e8565b6001600160a01b0386165f9081526007602052604090205490915081111561090b57846108da86610b25565b60405163391434e360e21b81526001600160a01b039092166004830152602482015260448101849052606401610834565b6001600160a01b0385165f90815260076020526040812080548392906109329084906122d3565b90915550506001600160a01b0384165f908152600760205260408120805483929061095e9084906122e6565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109aa91815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba856040516109f791815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee383604051610a4491815260200190565b60405180910390a360019150505b9392505050565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610a9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac291906122a0565b610ae15760405163183e22b760e21b8152336004820152602401610834565b610aeb82826113fc565b5050565b610af7611587565b610b008261162b565b610aeb8282611633565b5f610b136116f4565b505f805160206124e183398151915290565b6001600160a01b0381165f90815260076020526040812054610b46906113b0565b92915050565b610b5461173d565b610b5d5f61176f565b565b3380610b69611303565b6001600160a01b031614610b9b5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610834565b610ba48161176f565b50565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1091906122a0565b610c2f5760405163183e22b760e21b8152336004820152602401610834565b600254610c47906001600160a01b03163330846117a7565b6001546002546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa158015610c96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba919061238d565b6101000151604051630ed1279f60e11b81523060048201529091505f906001600160a01b03831690631da24f3e90602401602060405180830381865afa158015610d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a91906124ae565b600154600254919250610d4a916001600160a01b03908116911685611814565b60015460025460405163617ba03760e01b81526001600160a01b039182166004820152602481018690523060448201525f606482015291169063617ba037906084015f604051808303815f87803b158015610da3575f80fd5b505af1158015610db5573d5f803e3d5ffd5b5050604051630ed1279f60e11b81523060048201525f92508391506001600160a01b03851690631da24f3e90602401602060405180830381865afa158015610dff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2391906124ae565b610e2d91906122d3565b9050610e3985826118a3565b505050505050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6004805461052990612161565b5f80546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906122a0565b610f0b5760405163183e22b760e21b8152336004820152602401610834565b610a523384846107af565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610f5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f91906122a0565b610f9e5760405163183e22b760e21b8152336004820152602401610834565b610aeb82826118a3565b60015460025460405163d15e005360e01b81526001600160a01b0391821660048201525f92919091169063d15e005390602401602060405180830381865afa158015610ff6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d491906124ae565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108391906122a0565b6110a25760405163183e22b760e21b8152336004820152602401610834565b6001546002546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa1580156110f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611115919061238d565b6101000151604051630ed1279f60e11b81523060048201529091505f906001600160a01b03831690631da24f3e90602401602060405180830381865afa158015611161573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118591906124ae565b600154600254604051631a4ca37b60e21b81526001600160a01b03918216600482015260248101879052878216604482015292935016906369328dec906064016020604051808303815f875af11580156111e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120591906124ae565b50604051630ed1279f60e11b81523060048201525f906001600160a01b03841690631da24f3e90602401602060405180830381865afa15801561124a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e91906124ae565b61127890836122d3565b9050610e3986826113fc565b5f80546040516337649a6d60e11b81526001600160a01b03848116600483015290911690636ec934da90602401602060405180830381865afa1580156112cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f091906122a0565b6112fa575f610a52565b505f1992915050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610e65565b61133361173d565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611377610e41565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f610b46826113bd610fa8565b6b033b2e3c9fd0803ce80000006113e8565b6113d76119d4565b610ba481611a1d565b610b5d6119d4565b5f6113f4848484611a4e565b949350505050565b6001600160a01b03821661142557604051634b637e8f60e11b81525f6004820152602401610834565b5f61142f826113b0565b6001600160a01b0384165f9081526007602052604090205490915082111561148c578261145b84610b25565b60405163391434e360e21b81526001600160a01b039092166004830152602482015260448101829052606401610834565b6001600160a01b0383165f90815260076020526040812080548492906114b39084906122d3565b90915550506006805483900390556040518181525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040518181525f906001600160a01b038516907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281525f906001600160a01b038516907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020015b60405180910390a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061160d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116015f805160206124e1833981519152546001600160a01b031690565b6001600160a01b031614155b15610b5d5760405163703e46dd60e11b815260040160405180910390fd5b610ba461173d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561168d575060408051601f3d908101601f1916820190925261168a918101906124ae565b60015b6116b557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610834565b5f805160206124e183398151915281146116e557604051632a87526960e21b815260048101829052602401610834565b6116ef8383611a72565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5d5760405163703e46dd60e11b815260040160405180910390fd5b33611746610e41565b6001600160a01b031614610b5d5760405163118cdaa760e01b8152336004820152602401610834565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610aeb82611ac7565b6040516001600160a01b03848116602483015283811660448301526064820183905261180e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611b37565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526118658482611b98565b61180e576040516001600160a01b0384811660248301525f604483015261189991869182169063095ea7b3906064016117dc565b61180e8482611b37565b6001600160a01b0382166118cc5760405163ec442f0560e01b81525f6004820152602401610834565b8060065f8282546118dd91906122e6565b90915550506001600160a01b0382165f908152600760205260408120805483019055611908826113b0565b9050826001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161194f91815260200190565b60405180910390a36040518181526001600160a01b038416905f907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281526001600160a01b038416905f907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee39060200161157a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5d57604051631afcd79f60e31b815260040160405180910390fd5b611a256119d4565b6001600160a01b038116610b9b57604051631e4fbdf760e01b81525f6004820152602401610834565b5f825f190484118302158202611a6b5763ad251c275f526004601cfd5b5091020490565b611a7b82611c39565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611abf576116ef8282611c9c565b610aeb611d05565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f611b4b6001600160a01b03841683611d24565b905080515f14158015611b6f575080806020019051810190611b6d91906122a0565b155b156116ef57604051635274afe760e01b81526001600160a01b0384166004820152602401610834565b5f805f846001600160a01b031684604051611bb391906124c5565b5f604051808303815f865af19150503d805f8114611bec576040519150601f19603f3d011682016040523d82523d5f602084013e611bf1565b606091505b5091509150818015611c1b575080511580611c1b575080806020019051810190611c1b91906122a0565b8015611c3057505f856001600160a01b03163b115b95945050505050565b806001600160a01b03163b5f03611c6e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610834565b5f805160206124e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611cb891906124c5565b5f60405180830381855af49150503d805f8114611cf0576040519150601f19603f3d011682016040523d82523d5f602084013e611cf5565b606091505b5091509150611c30858383611d31565b3415610b5d5760405163b398979f60e01b815260040160405180910390fd5b6060610a5283835f611d8d565b606082611d4657611d4182611e26565b610a52565b8151158015611d5d57506001600160a01b0384163b155b15611d8657604051639996b31560e01b81526001600160a01b0385166004820152602401610834565b5080610a52565b606081471015611db25760405163cd78605960e01b8152306004820152602401610834565b5f80856001600160a01b03168486604051611dcd91906124c5565b5f6040518083038185875af1925050503d805f8114611e07576040519150601f19603f3d011682016040523d82523d5f602084013e611e0c565b606091505b5091509150611e1c868383611d31565b9695505050505050565b805115611e365780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015611e69578181015183820152602001611e51565b50505f910152565b602081525f8251806020840152611e8f816040850160208701611e4f565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ba4575f80fd5b5f8060408385031215611ec8575f80fd5b8235611ed381611ea3565b946020939093013593505050565b5f60208284031215611ef1575f80fd5b8135610a5281611ea3565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715611f3457611f34611efc565b60405290565b5f67ffffffffffffffff80841115611f5457611f54611efc565b604051601f8501601f19908116603f01168101908282118183101715611f7c57611f7c611efc565b81604052809350858152868686011115611f94575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611fbc575f80fd5b610a5283833560208501611f3a565b5f805f805f805f60e0888a031215611fe1575f80fd5b8735611fec81611ea3565b96506020880135611ffc81611ea3565b9550604088013561200c81611ea3565b9450606088013561201c81611ea3565b9350608088013567ffffffffffffffff80821115612038575f80fd5b6120448b838c01611fad565b945060a08a0135915080821115612059575f80fd5b506120668a828b01611fad565b92505060c088013560ff8116811461207c575f80fd5b8091505092959891949750929550565b5f805f6060848603121561209e575f80fd5b83356120a981611ea3565b925060208401356120b981611ea3565b929592945050506040919091013590565b5f80604083850312156120db575f80fd5b82356120e681611ea3565b9150602083013567ffffffffffffffff811115612101575f80fd5b8301601f81018513612111575f80fd5b61212085823560208401611f3a565b9150509250929050565b5f806040838503121561213b575f80fd5b823561214681611ea3565b9150602083013561215681611ea3565b809150509250929050565b600181811c9082168061217557607f821691505b60208210810361219357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156116ef57805f5260205f20601f840160051c810160208510156121be5750805b601f840160051c820191505b818110156121dd575f81556001016121ca565b5050505050565b815167ffffffffffffffff8111156121fe576121fe611efc565b6122128161220c8454612161565b84612199565b602080601f831160018114612245575f841561222e5750858301515b5f19600386901b1c1916600185901b178555610e39565b5f85815260208120601f198616915b8281101561227357888601518255948401946001909101908401612254565b508582101561229057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156122b0575f80fd5b81518015158114610a52575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4657610b466122bf565b80820180821115610b4657610b466122bf565b5f60208284031215612309575f80fd5b6040516020810181811067ffffffffffffffff8211171561232c5761232c611efc565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114612358575f80fd5b919050565b805164ffffffffff81168114612358575f80fd5b805161ffff81168114612358575f80fd5b805161235881611ea3565b5f6101e0828403121561239e575f80fd5b6123a6611f10565b6123b084846122f9565b81526123be60208401612339565b60208201526123cf60408401612339565b60408201526123e060608401612339565b60608201526123f160808401612339565b608082015261240260a08401612339565b60a082015261241360c0840161235d565b60c082015261242460e08401612371565b60e0820152610100612437818501612382565b90820152610120612449848201612382565b9082015261014061245b848201612382565b9082015261016061246d848201612382565b9082015261018061247f848201612339565b908201526101a0612491848201612339565b908201526101c06124a3848201612339565b908201529392505050565b5f602082840312156124be575f80fd5b5051919050565b5f82516124d6818460208701611e4f565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212204af9f96c6c2c3a0ae547d70337868a68b3ee9ae1c64a4b1597e83dfd5de7c09764736f6c6343000817003360806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220ef658173ec6442fec70f959a724d6a3e10076c082fad49fbe00ede42118994d064736f6c63430008170033a26469706673582212204d6e702b1990c7cdee1230db05edca8dedfe6f98fe5edeea10a5f8192ba949cb64736f6c63430008170033", + "nonce": "0x85", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbd0a71434e69bdf73528fe8df9c5f69a578ecd8e06f0ff746bef4c1a64970883", + "transactionType": "CREATE2", + "contractName": "RiskLibrary", + "contractAddress": "0x15f42baf389652cc0904f6fcc54b907a1147a7ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xc9240", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006109ca610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610090575f3560e01c8063624540c211610063578063624540c2146101055780639d8d9cb614610118578063c10ffc8d1461012b578063d2a01f5d1461013e575f80fd5b806308db7a26146100945780632d77afb6146100ba578063325191d2146100cf5780635defb969146100f2575b5f80fd5b6100a76100a236600461079a565b610151565b6040519081526020015b60405180910390f35b6100cd6100c836600461079a565b6103db565b005b6100e26100dd3660046107d3565b610461565b60405190151581526020016100b1565b6100cd6101003660046107d3565b610555565b6100cd6101133660046107d3565b610599565b6100e261012636600461079a565b6105ce565b6100cd6101393660046107d3565b6105e7565b6100e261014c3660046107d3565b610634565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa15801561019e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c291906107f3565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015610211573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023591906107f3565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b091906107f3565b905081156103cd5760158601546040805163313ce56760e01b815290516103c3926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610303573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610327919061080a565b61033290600a61091e565b61033c908561092c565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610385573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a9919061080a565b6103b490600a61091e565b6103be908661092c565b61072d565b93505050506103d5565b5f1993505050505b92915050565b60068201546001600160a01b0382165f908152600e84016020526040812060080154909161040891610741565b9050806104158484610151565b101561045c57816104268484610151565b604051632712e36d60e11b81526001600160a01b0390921660048301526024820152604481018290526064015b60405180910390fd5b505050565b5f818152600f8301602052604080822090516303eb153f60e51b81526004810185905260248101849052829073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156104c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104eb9190610943565b60118601549091508410801561054c575081546105129086906001600160a01b03166105ce565b80156105305750600281600281111561052d5761052d610961565b14155b8061054c5750600181600281111561054a5761054a610961565b145b95945050505050565b805f1080156105675750600882015481105b1561059557600882015460405163af90e61360e01b8152610453918391600401918252602082015260400190565b5050565b6008820154811015610595576008820154604051637a56ac9b60e01b8152610453918391600401918252602082015260400190565b60078201545f906105df8484610151565b109392505050565b600a8201548110806105fc5750600b82015481115b1561059557600a820154600b83015460405163a35ff9f160e01b81526004810184905260248101929092526044820152606401610453565b5f818152601083016020908152604080832060028101548452600f860190925280832090516303eb153f60e51b81526004810186905260248101859052839073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156106ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d19190610943565b90506106dd8686610753565b801561072357508154670de0b6b3a7640000906107049088906001600160a01b0316610151565b1080156107235750600281600281111561072057610720610961565b14155b9695505050505050565b5f610739848484610776565b949350505050565b5f8183108284180283185b9392505050565b5f61076060025f19610975565b821015801561074c575050601291909101541190565b5f825f1904841183021582026107935763ad251c275f526004601cfd5b5091020490565b5f80604083850312156107ab575f80fd5b8235915060208301356001600160a01b03811681146107c8575f80fd5b809150509250929050565b5f80604083850312156107e4575f80fd5b50508035926020909101359150565b5f60208284031215610803575f80fd5b5051919050565b5f6020828403121561081a575f80fd5b815160ff8116811461074c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561087857815f190482111561085e5761085e61082a565b8085161561086b57918102915b93841c9390800290610843565b509250929050565b5f8261088e575060016103d5565b8161089a57505f6103d5565b81600181146108b057600281146108ba576108d6565b60019150506103d5565b60ff8411156108cb576108cb61082a565b50506001821b6103d5565b5060208310610133831016604e8410600b84101617156108f9575081810a6103d5565b610903838361083e565b805f19048211156109165761091661082a565b029392505050565b5f61074c60ff841683610880565b80820281158282048414176103d5576103d561082a565b5f60208284031215610953575f80fd5b81516003811061074c575f80fd5b634e487b7160e01b5f52602160045260245ffd5b5f8261098f57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220122616f64fdb1a7100b0df38e9b7d66b2c3dc7c1a4ac3d4361115d66e074b79b64736f6c63430008170033", + "nonce": "0x86", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5572ef8331b15a456c953389b549fbd225264babc091106b0afa303d27e37456", + "transactionType": "CREATE2", + "contractName": "AccountingLibrary", + "contractAddress": "0x001e0b48886404dda139132cefb03891e37c4e55", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xeeff0", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610b1a610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c80630896e1ac146100595780632bfba1471461007a5780638f8b47ca14610099578063adb08884146100ff575b5f80fd5b818015610064575f80fd5b506100786100733660046109a6565b61011e565b005b818015610085575f80fd5b506100786100943660046109ea565b610283565b8180156100a4575f80fd5b506100b86100b3366004610a3e565b610505565b6040516100f6919081516001600160a01b03168152602080830151151590820152604080830151908201526060918201519181019190915260800190565b60405180910390f35b81801561010a575f80fd5b506100786101193660046109a6565b61085c565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610175573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101999190610a88565b905081816001015f8282546101ae9190610ab3565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb969916101f8918891600401918252602082015260400190565b5f6040518083038186803b15801561020e575f80fd5b505af4158015610220573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf2691015b60405180910390a350505050565b604051633978289f60e01b815260048101869052602481018590525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156102da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102fe9190610a88565b905082816001015403610384578054821515600160a01b9081026001600160a81b03199092166001600160a01b038716908117929092178084556001840154604080519182529290910460ff161515602082015287917f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf26910160405180910390a36104fd565b600281015461039487878661011e565b604080516080810182526001600160a01b03871681528415156020820152908101859052606081018290526012880180545f91826103d183610acc565b909155505f81815260108b01602090815260409182902085518154928701511515600160a01b026001600160a81b03199093166001600160a01b039091161791909117815581850151600182018190556060860151600292909201919091559051633122a06160e11b81529192507315f42baf389652cc0904f6fcc54b907a1147a7ab9163624540c291610473918d9190600401918252602082015260400190565b5f6040518083038186803b158015610489575f80fd5b505af415801561049b573d5f803e3d5ffd5b5050505082876001600160a01b0316827f95c0961f606b338f7e6a3c8fd3b2559a53eb7b083ba4b953fed4f412644919138b8a8a6040516104f19392919092835260208301919091521515604082015260600190565b60405180910390a45050505b505050505050565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160a01b0386168152602081018590529081018390525f60608201819052601188018054908261056483610acc565b909155505f818152600f8a016020908152604091829020855181546001600160a01b0319166001600160a01b03918216178255868301516001830155868401516002830155606087015160039092019190915582518981529182018890529293508983169289169184917f0acb8d1aa087e3e5ac169a594b33e8f991bc9e717cdb4fbe0aa6e0b67c18cdb7910160405180910390a46040518060800160405280886001600160a01b03168152602001600115158152602001836020015181526020018281525092505f88600e016004015f81548092919061064490610acc565b909155505f81815260108b01602090815260409182902087518154928901511515600160a01b026001600160a81b03199093166001600160a01b039091161791909117815581870151600182018190556060880151600292909201919091559051633122a06160e11b81529192507315f42baf389652cc0904f6fcc54b907a1147a7ab9163624540c2916106e6918d9190600401918252602082015260400190565b5f6040518083038186803b1580156106fc575f80fd5b505af415801561070e573d5f803e3d5ffd5b507315f42baf389652cc0904f6fcc54b907a1147a7ab925063c10ffc8d91508b905061073a4289610ab3565b6040516001600160e01b031960e085901b168152600481019290925260248201526044015f6040518083038186803b158015610774575f80fd5b505af4158015610786573d5f803e3d5ffd5b5050505081886001600160a01b0316827f95c0961f606b338f7e6a3c8fd3b2559a53eb7b083ba4b953fed4f412644919135f19886040015189602001516040516107e59392919092835260208301919091521515604082015260600190565b60405180910390a460188901546040516340c10f1960e01b81526001600160a01b03898116600483015260248201899052909116906340c10f19906044015f604051808303815f87803b15801561083a575f80fd5b505af115801561084c573d5f803e3d5ffd5b5050505050505095945050505050565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af41580156108b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d79190610a88565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b158015610927575f80fd5b505af1158015610939573d5f803e3d5ffd5b5050505081816001015f8282546109509190610ab3565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261027592918252602082015260400190565b5f805f606084860312156109b8575f80fd5b505081359360208301359350604090920135919050565b80356001600160a01b03811681146109e5575f80fd5b919050565b5f805f805f60a086880312156109fe575f80fd5b8535945060208601359350610a15604087016109cf565b92506060860135915060808601358015158114610a30575f80fd5b809150509295509295909350565b5f805f805f60a08688031215610a52575f80fd5b85359450610a62602087016109cf565b9350610a70604087016109cf565b94979396509394606081013594506080013592915050565b5f60208284031215610a98575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ac657610ac6610a9f565b92915050565b5f60018201610add57610add610a9f565b506001019056fea2646970667358221220c468a17cb838a0aa836c2f35d7891fe4c8c7a4421d27653ce8a4d73314b980ef64736f6c63430008170033", + "nonce": "0x87", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x40f17d48d71e960279cd6436dede17d2083de8744310833b5b2d6f1040adb43c", + "transactionType": "CREATE2", + "contractName": "Withdraw", + "contractAddress": "0x0a7cc36c14f766a8561f95a0a5af90f0da46c49a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x77cee", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610515610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80630433026c14610043578063b8359e9714610058575b5f80fd5b61005661005136600461046d565b610077565b005b818015610063575f80fd5b5061005661007236600461046d565b610166565b60148201546001600160a01b031661009260208301836104a2565b6001600160a01b0316141580156100cb575060158201546001600160a01b03166100bf60208301836104a2565b6001600160a01b031614155b15610106576100dd60208201826104a2565b60405163276b4fc160e01b81526001600160a01b03909116600482015260240160405180910390fd5b80602001355f0361012a5760405163052f91cb60e51b815260040160405180910390fd5b5f61013b60608301604084016104a2565b6001600160a01b0316036101625760405163de0ce17d60e01b815260040160405180910390fd5b5050565b60158201545f906001600160a01b031661018360208401846104a2565b6001600160a01b0316036102af57601a8301546040516370a0823160e01b815233600482015261020d916020850135916001600160a01b03909116906370a08231906024015b602060405180830381865afa1580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020891906104c8565b61045b565b905080156102aa57730b703e06170f72e1fea923a4e44fea2e3b406f8c63785923ca843361024160608701604088016104a2565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610293575f80fd5b505af41580156102a5573d5f803e3d5ffd5b505050505b6103ee565b60168301546040516370a0823160e01b81523360048201526102eb916020850135916001600160a01b03909116906370a08231906024016101c9565b9050801561038857730b703e06170f72e1fea923a4e44fea2e3b406f8c637d3a9c21843361031f60608701604088016104a2565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610371575f80fd5b505af4158015610383573d5f803e3d5ffd5b505050505b6040516316bbd7db60e11b8152600481018490523360248201527315f42baf389652cc0904f6fcc54b907a1147a7ab90632d77afb6906044015f6040518083038186803b1580156103d7575f80fd5b505af41580156103e9573d5f803e3d5ffd5b505050505b6103fe60608301604084016104a2565b6001600160a01b031661041460208401846104a2565b6001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161044e91815260200190565b60405180910390a3505050565b5f8183118284180283185b9392505050565b5f80828403608081121561047f575f80fd5b833592506060601f1982011215610494575f80fd5b506020830190509250929050565b5f602082840312156104b2575f80fd5b81356001600160a01b0381168114610466575f80fd5b5f602082840312156104d8575f80fd5b505191905056fea2646970667358221220be6f0da21e2e6975a66ba3b385933e1a5db2d5db5b303599dbaf40d74bf4f08564736f6c63430008170033", + "nonce": "0x88", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x89dbd7fa8b92821b35970fbb0b249c202512926002a573f03dd127858cb408bc", + "transactionType": "CREATE2", + "contractName": "Liquidate", + "contractAddress": "0xb5a851ebd5d501607af946d36496ebce3eb9b1d4", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1385eb", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610ecf610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063341a672c1461004e578063416a86be1461007f578063489d188114610094575b5f80fd5b818015610059575f80fd5b5061006d610068366004610c31565b6100a7565b60405190815260200160405180910390f35b61009261008d366004610c31565b6106ef565b005b6100926100a2366004610c5c565b61095d565b604051634c9829bf60e11b815260048101839052813560248201525f90819073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610100573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101249190610c8f565b6040516303eb153f60e51b815260048101869052843560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610ca6565b825460405163046dbd1360e11b8152600481018890526001600160a01b0390911660248201529091505f907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610207573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022b9190610c8f565b9050845f01357f795c55cbd95e2b41aab900048a79eb75b1fa47b1858e19264fbfbad5159bdd888660200135838560405161026893929190610cd8565b60405180910390a28254604051634ec6ce5b60e11b8152600481018890526001600160a01b0390911660248201525f907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401602060405180830381865af41580156102d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f69190610d10565b61030457600387015461030a565b60048701545b6040516345ffd36d60e01b81526004810189905285546001600160a01b031660248201526001860154604482015260028601546064820152600386015460848201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc906345ffd36d9060a401602060405180830381865af415801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af9190610c8f565b90505f6103c986600101548a61098f90919063ffffffff16565b90505f81831115610474575f6104006103e28486610d43565b6103fb858e5f0160020154670de0b6b3a7640000610b96565b610baa565b905061040c8184610d56565b98505f6104198a86610d43565b90505f61044985670de0b6b3a76400008f6006016001015461043b9190610d43565b670de0b6b3a7640000610bbf565b90506104558282610baa565b915061046a8288670de0b6b3a7640000610bbf565b9350505050610478565b8297505b601a8a015460018801546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156104d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f89190610d10565b5060168a015487546040516323b872dd60e01b81526001600160a01b039182166004820152336024820152604481018b90529116906323b872dd906064016020604051808303815f875af1158015610552573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105769190610d10565b5060168a0154875460058c01546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156105d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190610d10565b50601a8a01546040805163bbf44f3360e01b815290516001600160a01b039092169163bbf44f33916004808201926020929091908290030181865afa158015610646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066a9190610c8f565b60038801556001870154604051632b6c222160e21b8152600481018c90528a356024820152604481019190915273001e0b48886404dda139132cefb03891e37c4e559063adb08884906064015f6040518083038186803b1580156106cc575f80fd5b505af41580156106de573d5f803e3d5ffd5b505050505050505050505092915050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a9190610c8f565b604051631928c8e960e11b815260048101859052833560248201529091507315f42baf389652cc0904f6fcc54b907a1147a7ab9063325191d290604401602060405180830381865af41580156107c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e69190610d10565b61092d57805460405163046dbd1360e11b8152600481018590526001600160a01b0390911660248201528235907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af415801561084d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108719190610c8f565b6040516303eb153f60e51b8152600481018690528435602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156108c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ea9190610ca6565b60028111156108fb576108fb610cc4565b604051636a176f8160e01b81526004810193909352602483019190915260ff1660448201526064015b60405180910390fd5b42826040013510156109585760408051639298e9a960e01b8152908301356004820152602401610924565b505050565b81602001358110156109585760405163534a695160e01b81526004810182905260208301356024820152604401610924565b5f610b8f83600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190610c8f565b610a1690600a610e49565b610a209084610e54565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610a6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8e9190610e6b565b610a9990600a610e8b565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b079190610e6b565b610b1290600a610e8b565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa158015610b5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b809190610c8f565b610b8a9190610e54565b610b96565b9392505050565b5f610ba2848484610bcb565b949350505050565b5f818311828418028318610b8f565b92915050565b5f610ba2848484610bf7565b5f825f190484118302158202610be85763ad251c275f526004601cfd5b50910281810615159190040190565b5f825f190484118302158202610c145763ad251c275f526004601cfd5b5091020490565b5f60608284031215610c2b575f80fd5b50919050565b5f8060808385031215610c42575f80fd5b82359150610c538460208501610c1b565b90509250929050565b5f805f60a08486031215610c6e575f80fd5b83359250610c7f8560208601610c1b565b9150608084013590509250925092565b5f60208284031215610c9f575f80fd5b5051919050565b5f60208284031215610cb6575f80fd5b815160038110610b8f575f80fd5b634e487b7160e01b5f52602160045260245ffd5b838152602081018390526060810160038310610d0257634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b5f60208284031215610d20575f80fd5b81518015158114610b8f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610bb957610bb9610d2f565b80820180821115610bb957610bb9610d2f565b600181815b80851115610da357815f1904821115610d8957610d89610d2f565b80851615610d9657918102915b93841c9390800290610d6e565b509250929050565b5f82610db957506001610bb9565b81610dc557505f610bb9565b8160018114610ddb5760028114610de557610e01565b6001915050610bb9565b60ff841115610df657610df6610d2f565b50506001821b610bb9565b5060208310610133831016604e8410600b8410161715610e24575081810a610bb9565b610e2e8383610d69565b805f1904821115610e4157610e41610d2f565b029392505050565b5f610b8f8383610dab565b8082028115828204841417610bb957610bb9610d2f565b5f60208284031215610e7b575f80fd5b815160ff81168114610b8f575f80fd5b5f610b8f60ff841683610dab56fea26469706673582212208abab1e6386b7ddb6d05a9039959c21aaa4c3bf5dd7cdc90d80197309741ad9f64736f6c63430008170033", + "nonce": "0x89", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83e24315e70dc2ea664bb2f10e6379f1eb51365e77e1aa74f61dfc7da9a0ddc2", + "transactionType": "CREATE2", + "contractName": "LiquidateWithReplacement", + "contractAddress": "0x44a956a465dddf7809b0d99a1b2aa90e4b019719", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x160030", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006110cf610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80636e6595c11461004e5780639f53ee0f14610063578063c8f496ea14610076575b5f80fd5b61006161005c366004610e0e565b6100b4565b005b610061610071366004610e41565b61013c565b818015610081575f80fd5b50610095610090366004610e41565b6106db565b6040805193845260208401929092529082015260600160405180910390f35b60408051606080820183528435825284830135602083015284013581830152905163489d188160e01b815273b5a851ebd5d501607af946d36496ebce3eb9b1d49163489d18819161010b9187918690600401610e6c565b5f6040518083038186803b158015610121575f80fd5b505af4158015610133573d5f803e3d5ffd5b50505050505050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610193573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b79190610ea2565b90505f600e8401816101cf6040860160208701610eb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2060040190508373b5a851ebd5d501607af946d36496ebce3eb9b1d463416a86be90916040518060600160405280875f013581526020018760400135815260200187606001358152506040518363ffffffff1660e01b8152600401610253929190610edf565b5f6040518083038186803b158015610269575f80fd5b505af415801561027b573d5f803e3d5ffd5b50506040805180820182528454815281516001860180546080602082810285018201909652606084018281526103a698509496508895870194849290918491908401828280156102e857602002820191905f5260205f20905b8154815260200190600101908083116102d4575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561033e57602002820191905f5260205f20905b81548152602001906001019080831161032a575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561039457602002820191905f5260205f20905b815481526020019060010190808311610380575b50505050508152505081525050610ca8565b156103e5576103bb6040840160208501610eb9565b60405163ca8dc70160e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f6040516303eb153f60e51b8152600481018690528435602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561043b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045f9190610f1b565b600281111561047057610470610f07565b146104915760405163225e181360e01b8152833560048201526024016103dc565b5f4283600201546104a29190610f4d565b600a8601549091508110806104ba5750600b85015481115b156104f257600a850154600b86015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064016103dc565b81546104fe8242610f60565b11156105325761050e8142610f60565b8254604051636f2f16a760e01b8152600481019290925260248201526044016103dc565b6040805160608082018352600d8801546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b9092041683850152835180850185528654815284516001880180546080818602840181019098529482018581525f9761069f97968a968c959087019490939092849284918401828280156105df57602002820191905f5260205f20905b8154815260200190600101908083116105cb575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561063557602002820191905f5260205f20905b815481526020019060010190808311610621575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561068b57602002820191905f5260205f20905b815481526020019060010190808311610677575b505050919092525050509052509190610cc7565b905084608001358110156106d3576040516375e8162760e01b815260048101829052608086013560248201526044016103dc565b505050505050565b5f80806106ee6040850160208601610eb9565b6001600160a01b0316845f01357fa2cee1fb50e5c6f9e43f296f600e015ce0a174ee069a678e3b2c212f41a426e4866040013560405161073091815260200190565b60405180910390a3604051634c9829bf60e11b815260048101869052843560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b39190610ea2565b6040805160808101825282546001600160a01b03168152600183015460208083019190915260028401548284015260038401546060830152929350915f91600e8a0191839161080791908b01908b01610eb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2060040190505f42836040015161083c9190610f4d565b60408051606080820183528b3582528b83013560208301528b0135818301529051630d0699cb60e21b815291925073b5a851ebd5d501607af946d36496ebce3eb9b1d49163341a672c91610895918d9190600401610edf565b602060405180830381865af41580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d49190610ea2565b6040805160608082018352600d8d01546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015283518085018552875481528451600189018054608081860284018101909852948201858152979d505f97610a45978a9694958c9590870194939284929091849184018282801561098557602002820191905f5260205f20905b815481526020019060010190808311610971575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109db57602002820191905f5260205f20905b8154815260200190600101908083116109c7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a3157602002820191905f5260205f20905b815481526020019060010190808311610a1d575b505050919092525050509052509190610d70565b9050610a718460200151670de0b6b3a764000083670de0b6b3a7640000610a6c9190610f60565b610d92565b9750878460200151610a839190610f4d565b9550610a9560408a0160208b01610eb9565b85546001600160a01b0319166001600160a01b03919091169081178655602085810151600188018190555f6003890181905560408051928352928201528b35917fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd910160405180910390a360188a01546001600160a01b03166340c10f19610b2360408c0160208d01610eb9565b60018801546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610b6b575f80fd5b505af1158015610b7d573d5f803e3d5ffd5b50505050601a8a01546001600160a01b03166323b872dd30610ba560408d0160208e01610eb9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018b90526064016020604051808303815f875af1158015610bf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190610f73565b50601a8a015460058b01546040516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018990529116906323b872dd906064016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190610f73565b5050505050509250925092565b80515f90158015610cc15750610cc18260200151610d9e565b92915050565b5f815f03610ce8576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a91610d27919087908790600401610fcc565b602060405180830381865af4158015610d42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190610ea2565b90505b9392505050565b5f80610d7d858585610cc7565b9050610d898184610dc4565b95945050505050565b5f610d66848484610dd4565b8051515f90158015610db35750602082015151155b8015610cc157505060400151511590565b5f610d6983836301e13380610d92565b5f825f190484118302158202610df15763ad251c275f526004601cfd5b5091020490565b5f60a08284031215610e08575f80fd5b50919050565b5f805f60e08486031215610e20575f80fd5b83359250610e318560208601610df8565b915060c084013590509250925092565b5f8060c08385031215610e52575f80fd5b82359150610e638460208501610df8565b90509250929050565b83815260a08101610e9460208301858051825260208082015190830152604090810151910152565b826080830152949350505050565b5f60208284031215610eb2575f80fd5b5051919050565b5f60208284031215610ec9575f80fd5b81356001600160a01b0381168114610d69575f80fd5b82815260808101610d6960208301848051825260208082015190830152604090810151910152565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610f2b575f80fd5b815160038110610d69575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cc157610cc1610f39565b80820180821115610cc157610cc1610f39565b5f60208284031215610f83575f80fd5b81518015158114610d69575f80fd5b5f815180845260208085019450602084015f5b83811015610fc157815187529582019590820190600101610fa5565b509495945050505050565b60a081525f8451606060a0840152610fe8610100840182610f92565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b8084101561102f578551825294840194600193909301929084019061100f565b5060408a01519450818782030160e088015261104b8186610f92565b95505050506110898185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b505082608083015294935050505056fea2646970667358221220e1f55265d39e263d9741dd6c0a17fb50d826c865f101fd89874b30515c2998b364736f6c63430008170033", + "nonce": "0x8a", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf43c1326c4f1d880ef37bfa1a8fe54d7b34ff0e5a08f6260d246a51515a6845b", + "transactionType": "CREATE2", + "contractName": "SellCreditMarket", + "contractAddress": "0x42e124065d379e6cfc0c8554c73eae439ef8eb85", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x21c98f", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611bf1610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80633763ed941461004e578063c074745414610063578063d73654eb146100e9575b5f80fd5b61006161005c3660046116fb565b610116565b005b6100766100713660046117f6565b6106cf565b60408051825180516001600160a01b031682526020808201511515818401528184015183850152606091820151828401528401516080808401919091529284015160a0808401919091529084015160c08301529183015160e0820152910151610100820152610120015b60405180910390f35b8180156100f4575f80fd5b506101086101033660046116fb565b610b71565b6040519081526020016100e0565b5f600e8301816101296020850185611822565b6001600160a01b0316815260208082019290925260409081015f20815180830183528154815282516001830180546080818802840181019096526060830181815293969495948701949293919284929184918401828280156101a857602002820191905f5260205f20905b815481526020019060010190808311610194575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156101fe57602002820191905f5260205f20905b8154815260200190600101908083116101ea575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561025457602002820191905f5260205f20905b815481526020019060010190808311610240575b5050505050815250508152505090505f61026d82610f96565b156102a95761027f6020840184611822565b604051637d904c7360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f1983602001350361030e5750600a8301546060830135908110806102d15750600b84015481115b1561030957600a840154600b85015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064016102a0565b6105b5565b604051633978289f60e01b815260048101859052602084013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610368573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038c919061183d565b604051630e65410960e41b815260048101879052602086013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af41580156103e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040d919061183d565b82549091506001600160a01b0316331461044e578154604051630d50389360e21b81523360048201526001600160a01b0390911660248201526044016102a0565b61045c866020870135610faf565b6105a0576040516303eb153f60e51b8152600481018790526020860135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611854565b60028111156104f0576104f0611872565b825460405163046dbd1360e11b8152600481018a90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610550573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610574919061183d565b604051636c5f92df60e11b8152600481019390935260ff909116602483015260448201526064016102a0565b4281600201546105b0919061189a565b925050505b82604001355f036105d95760405163052f91cb60e51b815260040160405180910390fd5b81516105e582426118ad565b1115610619576105f581426118ad565b8251604051636f2f16a760e01b8152600481019290925260248201526044016102a0565b428360800135101561064457604051639298e9a960e01b8152608084013560048201526024016102a0565b60408051606081018252600d8601546001600160801b038116825267ffffffffffffffff600160801b820481166020840152600160c01b90910416918101919091525f90610694908490846110da565b90508360a001358111156106c85760405163a8eb792b60e01b81526004810182905260a085013560248201526044016102a0565b5050505050565b6107246040805161014081019091525f60c0820181815260e083018290526101008301829052610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f1982602001510361073f57606082015160a0820152610899565b6020820151604051630e65410960e41b81526004810185905260248101919091525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561079c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c0919061183d565b6020840151604051633978289f60e01b815260048101879052602481019190915290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561081e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610842919061183d565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff16151560208201526001830154918101919091526002918201546060820152835281015461089290429061189a565b60a0830152505b6040805160608082018352600d8601546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015260a085015186516001600160a01b03165f908152600e8901835285812086518088018852815481528751600183018054608081890284018101909b529782018881529499610a279998969793969495938701949293919284929184919084018282801561096757602002820191905f5260205f20905b815481526020019060010190808311610953575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109bd57602002820191905f5260205f20905b8154815260200190600101908083116109a9575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a1357602002820191905f5260205f20905b8154815260200190600101908083116109ff575b505050919092525050509052509190611181565b90508260c0015115610a845760408301516020808401829052840151610a7091905f1914610a5a57835160400151610a60565b83602001515b60a08501518792919085906111a3565b608085015260608401526040830152610b6a565b6040808401519083018190526020840151610b5a91905f1914610aea5783516040015160a0850151610ae59190610abc9089906112a1565b610ace90670de0b6b3a764000061189a565b610ae086670de0b6b3a76400006118ad565b6112b4565b610af0565b83604001515b5f19866020015114610b0757845160400151610b49565b6040850151610b4990610b2286670de0b6b3a76400006118ad565b60a0880151610b32908b906112a1565b610b4490670de0b6b3a764000061189a565b6112c0565b60a0860151889392919086906112cc565b6080850152606084015260208301525b5092915050565b5f606082013560208301803590610b889085611822565b6001600160a01b03167f978f8f4f7cc470e9659bf6e7b3e9cc202975ae91f6f54c3d8d97c7c20b6775ba60408601356060870135610bcc60e0890160c08a016118c0565b60408051938452602084019290925215159082015260600160405180910390a45f610c0084610071368690038601866118db565b90505f19836020013503610cc5578373001e0b48886404dda139132cefb03891e37c4e55638f8b47ca9091333385602001518660a0015142610c4291906118ad565b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b0393841660248601529290911660448401526064830152608482015260a401608060405180830381865af4158015610c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc391906118f5565b505b5f5f19846020013514610cdc578360200135610ced565b6012850154610ced9060019061189a565b905073001e0b48886404dda139132cefb03891e37c4e55632bfba1478683610d186020890189611822565b60208701516040516001600160e01b031960e087901b168152600481019490945260248401929092526001600160a01b0316604483015260648201526001608482015260a4015f6040518083038186803b158015610d74575f80fd5b505af4158015610d86573d5f803e3d5ffd5b50505050601a8501546001600160a01b03166323b872dd610daa6020870187611822565b60408086015190516001600160e01b031960e085901b1681526001600160a01b03909216600483015233602483015260448201526064016020604051808303815f875af1158015610dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e219190611974565b50601a8501546001600160a01b03166323b872dd610e426020870187611822565b6005880154608086015160608701516001600160a01b0390921691610e6791906118ad565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc9190611974565b50610eea6020850185611822565b6001600160a01b0316336001600160a01b0316827f76c745bbc9ee9f9a6c9da49c6849bb4b84b6debecb7d8cc43856e25426bd52648560200151866080015187606001518860400151610f3d91906118ad565b610f4791906118ad565b6040888101516060808b01516080808d015160a0808f01518751998a5260208a0198909852958801949094529186015284015282015260c00160405180910390a4506040015190505b92915050565b80515f90158015610f905750610f9082602001516113bc565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015611006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102a9190611854565b600281111561103b5761103b611872565b1480156110d35750604051630e65410960e41b815260048101849052602481018390526110d190849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561109e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c2919061183d565b546001600160a01b03166113e2565b155b9392505050565b5f815f036110fb576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a9161113a9190879087906004016119c9565b602060405180830381865af4158015611155573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611179919061183d565b949350505050565b5f8061118e8585856110da565b905061119a81846113fb565b95945050505050565b5f8080806111be88670de0b6b3a7640000610ae089826118ad565b90506111cb89828761140b565b925086880361121057808311156111ff57604051632da5509d60e11b815260048101829052602481018490526044016102a0565b611209838261189a565b9350611295565b8688101561127257600189015491508061122a83856118ad565b111561125d578061123b83856118ad565b604051632da5509d60e11b8152600481019290925260248201526044016102a0565b81611268848361189a565b611209919061189a565b604051631e945d9d60e11b815260048101899052602481018890526044016102a0565b50955095509592505050565b81545f906110d390836301e133806112c0565b5f611179848484611428565b5f61117984848461144c565b5f805f806112da8a866112a1565b90505f8a5f016001015489106112fc5760018b01546112f9908a61189a565b90505b888a036113245787945061131d8583610b448a670de0b6b3a76400006118ad565b93506113ae565b808a101561138b5760018b01546113639061133f908c6118ad565b61135189670de0b6b3a76400006118ad565b610b4485670de0b6b3a764000061189a565b945061137c8583610b448a670de0b6b3a76400006118ad565b60018c015490945092506113ae565b604051632da5509d60e11b815260048101829052602481018b90526044016102a0565b505096509650969350505050565b8051515f901580156113d15750602082015151155b8015610f9057505060400151511590565b60078201545f906113f38484611478565b109392505050565b5f6110d383836301e133806112b4565b5f6111798361141a86856112a1565b670de0b6b3a76400006112c0565b5f825f1904841183021582026114455763ad251c275f526004601cfd5b5091020490565b5f825f1904841183021582026114695763ad251c275f526004601cfd5b50910281810615159190040190565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa1580156114c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e9919061183d565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015611538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155c919061183d565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d7919061183d565b905081156116ef5760158601546040805163313ce56760e01b815290516116e5926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561162a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164e9190611a96565b61165990600a611b96565b6116639085611ba4565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156116ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d09190611a96565b6116db90600a611b96565b610ae09086611ba4565b9350505050610f90565b5f199350505050610f90565b5f8082840361010081121561170e575f80fd5b8335925060e0601f1982011215611723575f80fd5b506020830190509250929050565b6001600160a01b0381168114611745575f80fd5b50565b8015158114611745575f80fd5b5f60e08284031215611765575f80fd5b60405160e0810181811067ffffffffffffffff8211171561179457634e487b7160e01b5f52604160045260245ffd5b60405290508082356117a581611731565b808252506020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c08301356117e981611748565b60c0919091015292915050565b5f806101008385031215611808575f80fd5b823591506118198460208501611755565b90509250929050565b5f60208284031215611832575f80fd5b81356110d381611731565b5f6020828403121561184d575f80fd5b5051919050565b5f60208284031215611864575f80fd5b8151600381106110d3575f80fd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f9057610f90611886565b80820180821115610f9057610f90611886565b5f602082840312156118d0575f80fd5b81356110d381611748565b5f60e082840312156118eb575f80fd5b6110d38383611755565b5f60808284031215611905575f80fd5b6040516080810181811067ffffffffffffffff8211171561193457634e487b7160e01b5f52604160045260245ffd5b604052825161194281611731565b8152602083015161195281611748565b6020820152604083810151908201526060928301519281019290925250919050565b5f60208284031215611984575f80fd5b81516110d381611748565b5f815180845260208085019450602084015f5b838110156119be578151875295820195908201906001016119a2565b509495945050505050565b60a081525f8451606060a08401526119e561010084018261198f565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b80841015611a2c5785518252948401946001939093019290840190611a0c565b5060408a01519450818782030160e0880152611a48818661198f565b9550505050611a868185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b5050826080830152949350505050565b5f60208284031215611aa6575f80fd5b815160ff811681146110d3575f80fd5b600181815b80851115611af057815f1904821115611ad657611ad6611886565b80851615611ae357918102915b93841c9390800290611abb565b509250929050565b5f82611b0657506001610f90565b81611b1257505f610f90565b8160018114611b285760028114611b3257611b4e565b6001915050610f90565b60ff841115611b4357611b43611886565b50506001821b610f90565b5060208310610133831016604e8410600b8410161715611b71575081810a610f90565b611b7b8383611ab6565b805f1904821115611b8e57611b8e611886565b029392505050565b5f6110d360ff841683611af8565b8082028115828204841417610f9057610f9061188656fea2646970667358221220f4b5ea672afb7e13b5aa5eb52e93495ee748409b40231033590b308866f57aa164736f6c63430008170033", + "nonce": "0x8b", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0c73848f4e0f798b1922d5c37b5217ebcfde388af726842c05de7d31a0f17f69", + "transactionType": "CREATE2", + "contractName": "SelfLiquidate", + "contractAddress": "0x49d3e25408fc670db9a3e83ad3ae92c85235a957", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xd2ca0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006109ad610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063a606b8e414610043578063c483402014610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046108ae565b610077565b005b6100626100723660046108ae565b6102e5565b6040518135907f1b0c722c962d641d9d4f81520102722fe69160219e22f1601e5fd2c3d5f5ed08905f90a2604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156100f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011d91906108e3565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019b91906108e3565b6040516302a349f760e41b81526004810186905283546001600160a01b038116602483015260a01c60ff161515604482015260018401546064820152600284015460848201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90632a349f709060a401602060405180830381865af4158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906108e3565b60028401546001850154919250610260918791908735906105e5565b601685015482546040516323b872dd60e01b81526001600160a01b039182166004820152336024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156102b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dd91906108fa565b505050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561033c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036091906108e3565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af41580156103ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103de91906108e3565b60405163d2a01f5d60e01b815260048101869052843560248201529091507315f42baf389652cc0904f6fcc54b907a1147a7ab9063d2a01f5d90604401602060405180830381865af4158015610436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a91906108fa565b6105a157805460405163046dbd1360e11b8152600481018690526001600160a01b0390911660248201528335907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af41580156104c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e591906108e3565b6040516303eb153f60e51b8152600481018790528535602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561053a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055e9190610920565b600281111561056f5761056f61093e565b6040516327938b9760e01b81526004810193909352602483019190915260ff1660448201526064015b60405180910390fd5b81546001600160a01b031633146105df57815460405163674386ff60e11b81523360048201526001600160a01b039091166024820152604401610598565b50505050565b6105f08484836105fb565b6105df848383610753565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610652573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067691906108e3565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b1580156106c6575f80fd5b505af11580156106d8573d5f803e3d5ffd5b5050505081816001015f8282546106ef9190610952565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261074592918252602082015260400190565b60405180910390a350505050565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156107aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce91906108e3565b905081816001015f8282546107e39190610952565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb9699161082d918891600401918252602082015260400190565b5f6040518083038186803b158015610843575f80fd5b505af4158015610855573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf269101610745565b5f8082840360408112156108c0575f80fd5b833592506020601f19820112156108d5575f80fd5b506020830190509250929050565b5f602082840312156108f3575f80fd5b5051919050565b5f6020828403121561090a575f80fd5b81518015158114610919575f80fd5b9392505050565b5f60208284031215610930575f80fd5b815160038110610919575f80fd5b634e487b7160e01b5f52602160045260245ffd5b8181038181111561097157634e487b7160e01b5f52601160045260245ffd5b9291505056fea26469706673582212206ed7971a7c1f96434aa32fe65b918f4585bf689abf2dc2a4823fa751bd347b2064736f6c63430008170033", + "nonce": "0x8c", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0633b005c2b398d3c9f57e31267d8137c18fb2a9d62f92726463ef58dfcf9d7d", + "transactionType": "CREATE2", + "contractName": "Compensate", + "contractAddress": "0x82b512fac9c21356bf5a050c710d4de7b7ff6eda", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1e2e95", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061176b610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806332f4053b146100435780634bc1120114610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046114a3565b610077565b005b6100626100723660046114a3565b610572565b8060200135815f01357f016d78045033c05583b0015db279cb36d1a0c3f2d8a52695dc17867864286c0583604001356040516100b591815260200190565b60405180910390a3604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610114573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013891906114d8565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b691906114d8565b90505f6101cb84604001358460010154610b8a565b90506101ff60405180608001604052805f6001600160a01b031681526020015f151581526020015f81526020015f81525090565b5f5f198660200135036102b05760028401546040516347c5a3e560e11b8152600481018990523360248201819052604482015260648101859052608481019190915273001e0b48886404dda139132cefb03891e37c4e5590638f8b47ca9060a401608060405180830381865af415801561027b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029f9190611503565b915084600101548314159050610386565b604051633978289f60e01b8152600481018890526020870135602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032c91906114d8565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff161515602082015260018301549181018290526002909201546060830152909250610379908490610b8a565b9250816040015183141590505b6002850154610399908890883586610b9e565b73001e0b48886404dda139132cefb03891e37c4e55632bfba1478860208901355f19146103ca5788602001356103db565b60128a01546103db906001906115a0565b885460405160e085901b6001600160e01b0319168152600481019390935260248301919091526001600160a01b038116604483015260648201879052600160a01b900460ff161515608482015260a4015f6040518083038186803b158015610441575f80fd5b505af4158015610453573d5f803e3d5ffd5b5050505080156105695760018701545f906104e490610473908a90610bba565b60168a01546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df91906114d8565b610b8a565b601689015460058a01546040516323b872dd60e01b81523360048201526001600160a01b0391821660248201526044810184905292935016906323b872dd906064016020604051808303815f875af1158015610542573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056691906115b3565b50505b50505050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156105c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ed91906114d8565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066b91906114d8565b90505f61068084604001358460010154610b8a565b90505f6040516303eb153f60e51b8152600481018790528535602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156106d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fc91906115e0565b600281111561070d5761070d6115cc565b146107335760405163225e181360e01b8152843560048201526024015b60405180910390fd5b5f198460200135036107a6575f42836002015461075091906115a0565b600a8701549091508110806107685750600b86015481115b156107a057600a860154600b87015460405163a35ff9f160e01b8152600481018490526024810192909252604482015260640161072a565b50610b25565b604051633978289f60e01b815260048101869052602085013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610800573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082491906114d8565b604051630e65410960e41b815260048101889052602087013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a591906114d8565b90506108b5876020880135610dba565b6109f9576040516303eb153f60e51b8152600481018890526020870135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610914573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093891906115e0565b6002811115610949576109496115cc565b825460405163046dbd1360e11b8152600481018b90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af41580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906114d8565b604051636c5f92df60e11b8152600481019390935260ff9091166024830152604482015260640161072a565b604051630e65410960e41b8152600481018890526020870135602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906114d8565b6002015484600201541015610aaa57604051633370566f60e21b8152863560048201526020870135602482015260440161072a565b835482546001600160a01b03908116911614610ae75781546040516319fe2f2b60e21b81526001600160a01b03909116600482015260240161072a565b8535602087013503610b12576040516310cc79db60e21b81526020870135600482015260240161072a565b610b20838360010154610b8a565b925050505b81546001600160a01b03163314610b63578154604051630b662e6b60e31b81523360048201526001600160a01b03909116602482015260440161072a565b805f03610b835760405163052f91cb60e51b815260040160405180910390fd5b5050505050565b5f8183118284180283185b90505b92915050565b610ba9848483610ee4565b610bb484838361103c565b50505050565b5f610b9583600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3691906114d8565b610c4190600a6116e5565b610c4b90846116f0565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb99190611707565b610cc490600a611727565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611707565b610d3d90600a611727565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa158015610d87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dab91906114d8565b610db591906116f0565b611197565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3591906115e0565b6002811115610e4657610e466115cc565b148015610b955750604051630e65410960e41b81526004810184905260248101839052610edc90849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd91906114d8565b546001600160a01b03166111ab565b159392505050565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906114d8565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b158015610faf575f80fd5b505af1158015610fc1573d5f803e3d5ffd5b5050505081816001015f828254610fd891906115a0565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261102e92918252602082015260400190565b60405180910390a350505050565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b791906114d8565b905081816001015f8282546110cc91906115a0565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb96991611116918891600401918252602082015260400190565b5f6040518083038186803b15801561112c575f80fd5b505af415801561113e573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf26910161102e565b5f6111a38484846111c4565b949350505050565b60078201545f906111bc84846111f0565b109392505050565b5f825f1904841183021582026111e15763ad251c275f526004601cfd5b50910281810615159190040190565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa15801561123d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126191906114d8565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156112b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d491906114d8565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f91906114d8565b9050811561146c5760158601546040805163313ce56760e01b81529051611462926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156113a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c69190611707565b6113d190600a611727565b6113db90856116f0565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190611707565b61145390600a611727565b61145d90866116f0565b611478565b9350505050610b98565b5f199350505050610b98565b5f6111a38484845f825f19048411830215820261149c5763ad251c275f526004601cfd5b5091020490565b5f8082840360808112156114b5575f80fd5b833592506060601f19820112156114ca575f80fd5b506020830190509250929050565b5f602082840312156114e8575f80fd5b5051919050565b805180151581146114fe575f80fd5b919050565b5f60808284031215611513575f80fd5b6040516080810181811067ffffffffffffffff8211171561154257634e487b7160e01b5f52604160045260245ffd5b60405282516001600160a01b038116811461155b575f80fd5b8152611569602084016114ef565b602082015260408301516040820152606083015160608201528091505092915050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b9857610b9861158c565b5f602082840312156115c3575f80fd5b610b95826114ef565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156115f0575f80fd5b8151600381106115fe575f80fd5b9392505050565b600181815b8085111561163f57815f19048211156116255761162561158c565b8085161561163257918102915b93841c939080029061160a565b509250929050565b5f8261165557506001610b98565b8161166157505f610b98565b816001811461167757600281146116815761169d565b6001915050610b98565b60ff8411156116925761169261158c565b50506001821b610b98565b5060208310610133831016604e8410600b84101617156116c0575081810a610b98565b6116ca8383611605565b805f19048211156116dd576116dd61158c565b029392505050565b5f610b958383611647565b8082028115828204841417610b9857610b9861158c565b5f60208284031215611717575f80fd5b815160ff811681146115fe575f80fd5b5f610b9560ff84168361164756fea2646970667358221220ef3350c872e07a2009e76f76f036f4a8605a10f0146f920a435193e8a53ee47764736f6c63430008170033", + "nonce": "0x8d", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf2a2eeeb3d0905c9c854e6bc108faae663f2e9f4de78adbed267c60a3089b198", + "transactionType": "CREATE2", + "contractName": "Claim", + "contractAddress": "0x1658c459ee72984769438696c82e419c137484fe", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x79d9e", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061058c610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806341d373f214610043578063af240afe14610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104b2565b610077565b005b6100626100723660046104b2565b61031f565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156100ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f291906104e7565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561014c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017091906104e7565b6001830154601a8601546040805163bbf44f3360e01b815290519394505f936101f493926001600160a01b03169163bbf44f339160048083019260209291908290030181865afa1580156101c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ea91906104e7565b846003015461047a565b6001840154604051630225b86b60e21b81526004810188905286356024820152604481019190915290915073001e0b48886404dda139132cefb03891e37c4e5590630896e1ac906064015f6040518083038186803b158015610254575f80fd5b505af4158015610266573d5f803e3d5ffd5b50505050601a85015483546040516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e791906104fe565b5060028301546040518535907f022e3d29644ead4083349ca84d24bcac368b2461819b70f5921fea15de4dec4d905f90a35050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039a91906104e7565b905060026040516303eb153f60e51b8152600481018590528335602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156103f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104179190610538565b600281111561042857610428610524565b1461044e57604051631e81d90160e11b8152823560048201526024015b60405180910390fd5b80600101545f0361047557604051631337c33760e21b815282356004820152602401610445565b505050565b5f61048684848461048e565b949350505050565b5f825f1904841183021582026104ab5763ad251c275f526004601cfd5b5091020490565b5f8082840360408112156104c4575f80fd5b833592506020601f19820112156104d9575f80fd5b506020830190509250929050565b5f602082840312156104f7575f80fd5b5051919050565b5f6020828403121561050e575f80fd5b8151801515811461051d575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610548575f80fd5b81516003811061051d575f80fdfea2646970667358221220e6f9a75297ba4b64946e4474868e4240300c35578ead6bfb8a1125d0864c2cd364736f6c63430008170033", + "nonce": "0x8e", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8b6a2a06bd0b1cf8feb40f9bab0e38fd83734d0dd19c31d2798ff837bb862f52", + "transactionType": "CREATE2", + "contractName": "Repay", + "contractAddress": "0x9f239921a3076cc9a0d24b28adebd52edd6895a2", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7172d", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610519610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003e575f3560e01c80628550581461004257806364140a8314610057575b5f80fd5b610055610050366004610419565b610076565b005b818015610062575f80fd5b50610055610071366004610419565b610206565b60026040516303eb153f60e51b8152600481018490528235602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f19190610462565b60028111156101025761010261044e565b0361012857604051630238826360e01b8152813560048201526024015b60405180910390fd5b6101386040820160208301610487565b604051634c9829bf60e11b815260048101849052823560248201526001600160a01b03919091169073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561019a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104ad565b546001600160a01b031614610202576101dd6040820160208301610487565b6040516324913f8f60e21b81526001600160a01b03909116600482015260240161011f565b5050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561025d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028191906104ad565b601a84015460018201546040516323b872dd60e01b815233600482015230602482015260448101919091529192506001600160a01b0316906323b872dd906064016020604051808303815f875af11580156102de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030291906104c4565b50601a8301546040805163bbf44f3360e01b815290516001600160a01b039092169163bbf44f33916004808201926020929091908290030181865afa15801561034d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037191906104ad565b60038201556001810154604051632b6c222160e21b81526004810185905283356024820152604481019190915273001e0b48886404dda139132cefb03891e37c4e559063adb08884906064015f6040518083038186803b1580156103d3575f80fd5b505af41580156103e5573d5f803e3d5ffd5b5050604051843592507fa6ffc78a660e4971a47a0f916a0abae483804e6f42c9292ed06aa64f8fe4623091505f90a2505050565b5f80828403606081121561042b575f80fd5b833592506040601f1982011215610440575f80fd5b506020830190509250929050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610472575f80fd5b815160038110610480575f80fd5b9392505050565b5f60208284031215610497575f80fd5b81356001600160a01b0381168114610480575f80fd5b5f602082840312156104bd575f80fd5b5051919050565b5f602082840312156104d4575f80fd5b81518015158114610480575f80fdfea2646970667358221220ec1710e2186d2bc90d15424504aa4ef07b9edefe99f7cc965bfe1e780341259b64736f6c63430008170033", + "nonce": "0x8f", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd063cf4db0aff6e3b229118cd2cbd0d46d5d4708cae035586cfae447b47d8ab5", + "transactionType": "CREATE2", + "contractName": "BuyCreditMarket", + "contractAddress": "0x43d1c35eaff6779751cfcf6000c8d7c30dc4655a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x21a8df", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611bd5610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063162103071461004e5780633903304a14610063578063b71df57f1461008c575b5f80fd5b61006161005c36600461168e565b6100b9565b005b61007661007136600461171d565b610693565b60405161008391906117b0565b60405180910390f35b818015610097575f80fd5b506100ab6100a636600461171d565b610b1e565b604051908152602001610083565b5f805f19836020013503610135576100d4602084018461183b565b600a850154909250606084013591508110806100f35750600b84015481115b1561013057600a840154600b85015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064015b60405180910390fd5b610407565b604051633978289f60e01b815260048101859052602084013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561018f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b39190611856565b604051630e65410960e41b815260048101879052602086013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102349190611856565b9050610244866020870135610f4f565b610388576040516303eb153f60e51b8152600481018790526020860135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156102a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c7919061186d565b60028111156102d8576102d861188b565b825460405163046dbd1360e11b8152600481018a90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190611856565b604051636c5f92df60e11b8152600481019390935260ff90911660248301526044820152606401610127565b81546001600160a01b03165f908152600e870160205260409020600981015460ff16806103be57508254600160a01b900460ff16155b156103e2576040516369ac754960e11b815260208701356004820152602401610127565b825460028301546001600160a01b0390911695506104019042906118b3565b93505050505b6001600160a01b0382165f908152600e850160209081526040808320815180830183526004820180548252835160059093018054608081880286018101909652606085018181529396929592870194939192849291849184018282801561048b57602002820191905f5260205f20905b815481526020019060010190808311610477575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156104e157602002820191905f5260205f20905b8154815260200190600101908083116104cd575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561053757602002820191905f5260205f20905b815481526020019060010190808311610523575b50505050508152505081525050905061054f8161107a565b156105785760405163ca8dc70160e01b81526001600160a01b0384166004820152602401610127565b83604001355f0361059c5760405163052f91cb60e51b815260040160405180910390fd5b80516105a883426118c6565b11156105dc576105b882426118c6565b8151604051636f2f16a760e01b815260048101929092526024820152604401610127565b428460800135101561060757604051639298e9a960e01b815260808501356004820152602401610127565b60408051606081018252600d8701546001600160801b038116825267ffffffffffffffff600160801b820481166020840152600160c01b90910416918101919091525f9061065790839085611093565b90508460a0013581101561068b576040516375e8162760e01b81526004810182905260a08601356024820152604401610127565b505050505050565b60408051610160810182525f60e0820181815261010083018290526101208301829052610140830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c0820152908201516001016107125781516001600160a01b03166020820152606082015160c082015261087a565b6020820151604051630e65410960e41b81526004810185905260248101919091525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561076f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190611856565b6020840151604051633978289f60e01b815260048101879052602481019190915290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108159190611856565b6040805160808101825282546001600160a01b038082168352600160a01b90910460ff1615156020808401919091526001850154938301939093526002938401546060830152818652905116908401528101546108739042906118b3565b60c0830152505b6040805160608082018352600d8601546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015260c0850151858201516001600160a01b03165f908152600e89018352858120865180880188526004820180548252885160059093018054608081890286018101909b529784018881529499610a0e99989697939692959387019493919284929184919084018282801561094e57602002820191905f5260205f20905b81548152602001906001019080831161093a575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109a457602002820191905f5260205f20905b815481526020019060010190808311610990575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109fa57602002820191905f5260205f20905b8154815260200190600101908083116109e6575b50505091909252505050905250919061113a565b90508260c0015115610ac9576040830151606083018190526020840151610ab591905f1914610a5e57835160400151610a5990670de0b6b3a7640000610a5486826118c6565b61115c565b610a64565b83606001515b5f19866020015114610a7b57845160400151610aa4565b6060850151610aa490610a9686670de0b6b3a76400006118c6565b670de0b6b3a7640000611168565b60c086015188939291908690611174565b60a085015260808401526040830152610b17565b6040808401519083018190526020840151610b0791905f1914610af157835160400151610af7565b83604001515b60c0850151879291908590611246565b60a0850152608084015260608301525b5092915050565b5f81606001518260200151835f01516001600160a01b03167fca34947de24ba1510e856663db085246362b4a5eee75687e6f93d56444820b9685604001518660c00151604051610b7a9291909182521515602082015260400190565b60405180910390a45f610b8d8484610693565b90505f19836020015103610c5a578373001e0b48886404dda139132cefb03891e37c4e55638f8b47ca909133846020015185604001518660c0015142610bd391906118c6565b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b0393841660248601529290911660448401526064830152608482015260a401608060405180830381865af4158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5491906118d9565b50610cde565b60208301516040828101519051632bfba14760e01b815260048101879052602481019290925233604483015260648201526001608482015273001e0b48886404dda139132cefb03891e37c4e5590632bfba1479060a4015f6040518083038186803b158015610cc7575f80fd5b505af4158015610cd9573d5f803e3d5ffd5b505050505b601a840154602082015160a0830151608084015160608501516001600160a01b03909416936323b872dd93339390929091610d1991906118b3565b610d2391906118b3565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d989190611958565b50601a840154600585015460a083015160808401516001600160a01b03938416936323b872dd933393911691610dce91906118c6565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610e1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e439190611958565b505f5f19846020015114610e5b578360200151610e6c565b6012850154610e6c906001906118b3565b9050336001600160a01b031682602001516001600160a01b0316827f76c745bbc9ee9f9a6c9da49c6849bb4b84b6debecb7d8cc43856e25426bd5264856040015186606001518760a0015188608001518960600151610ecb91906118b3565b610ed591906118b3565b88608001518960a001518a60c00151604051610f1996959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a48160a0015182608001518360600151610f3a91906118b3565b610f4491906118b3565b925050505b92915050565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610fa6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fca919061186d565b6002811115610fdb57610fdb61188b565b1480156110735750604051630e65410960e41b8152600481018490526024810183905261107190849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190611856565b546001600160a01b0316611337565b155b9392505050565b80515f90158015610f495750610f498260200151611350565b5f815f036110b4576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a916110f39190879087906004016119ad565b602060405180830381865af415801561110e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111329190611856565b949350505050565b5f80611147858585611093565b90506111538184611376565b95945050505050565b5f611132848484611386565b5f6111328484846113b2565b5f805f8688036111935785925061118c8989866113d6565b915061123a565b868810156112175760018901548810156111d0576001890154604051632da5509d60e11b8152600481019190915260248101899052604401610127565b60018901545f906111e1908a6118b3565b90506111f981610a9688670de0b6b3a76400006118c6565b93506112068a82876113d6565b9250895f016001015491505061123a565b604051632da5509d60e11b81526004810188905260248101899052604401610127565b96509650969350505050565b5f805f85870361127b5761126786670de0b6b3a7640000610a5488826118c6565b92506112748884866113d6565b91506112ee565b858710156112cb575f61129b88670de0b6b3a7640000610a5489826118c6565b60018a01549091506112ad90826118c6565b93506112ba8982876113d6565b9250885f01600101549150506112ee565b604051631e945d9d60e11b81526004810188905260248101879052604401610127565b826112f982846118c6565b111561132c578261130a82846118c6565b604051632da5509d60e11b815260048101929092526024820152604401610127565b955095509592505050565b60078201545f9061134884846113f3565b109392505050565b8051515f901580156113655750602082015151155b8015610f4957505060400151511590565b5f61107383836301e13380611168565b5f825f1904841183021582026113a35763ad251c275f526004601cfd5b50910281810615159190040190565b5f825f1904841183021582026113cf5763ad251c275f526004601cfd5b5091020490565b5f611132836113e5868561167b565b670de0b6b3a764000061115c565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa158015611440573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114649190611856565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156114b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d79190611856565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115529190611856565b9050811561166f5760158601546040805163313ce56760e01b81529051611665926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156115a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c99190611a7a565b6115d490600a611b7a565b6115de9085611b88565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611627573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164b9190611a7a565b61165690600a611b7a565b6116609086611b88565b611168565b9350505050610f49565b5f199350505050610f49565b81545f9061107390836301e1338061115c565b5f808284036101008112156116a1575f80fd5b8335925060e0601f19820112156116b6575f80fd5b506020830190509250929050565b60405160e0810167ffffffffffffffff811182821017156116f357634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b038116811461170d575f80fd5b50565b801515811461170d575f80fd5b5f80828403610100811215611730575f80fd5b8335925060e0601f1982011215611745575f80fd5b5061174e6116c4565b602084013561175c816116f9565b8082525060408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a082015260e08401356117a081611710565b60c0820152919491935090915050565b815180516001600160a01b03168252602080820151151581840152604080830151908401526060918201519183019190915282015161014082019061180060808401826001600160a01b03169052565b50604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015260c083015161012083015292915050565b5f6020828403121561184b575f80fd5b8135611073816116f9565b5f60208284031215611866575f80fd5b5051919050565b5f6020828403121561187d575f80fd5b815160038110611073575f80fd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f4957610f4961189f565b80820180821115610f4957610f4961189f565b5f608082840312156118e9575f80fd5b6040516080810181811067ffffffffffffffff8211171561191857634e487b7160e01b5f52604160045260245ffd5b6040528251611926816116f9565b8152602083015161193681611710565b6020820152604083810151908201526060928301519281019290925250919050565b5f60208284031215611968575f80fd5b815161107381611710565b5f815180845260208085019450602084015f5b838110156119a257815187529582019590820190600101611986565b509495945050505050565b60a081525f8451606060a08401526119c9610100840182611973565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b80841015611a1057855182529484019460019390930192908401906119f0565b5060408a01519450818782030160e0880152611a2c8186611973565b9550505050611a6a8185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b5050826080830152949350505050565b5f60208284031215611a8a575f80fd5b815160ff81168114611073575f80fd5b600181815b80851115611ad457815f1904821115611aba57611aba61189f565b80851615611ac757918102915b93841c9390800290611a9f565b509250929050565b5f82611aea57506001610f49565b81611af657505f610f49565b8160018114611b0c5760028114611b1657611b32565b6001915050610f49565b60ff841115611b2757611b2761189f565b50506001821b610f49565b5060208310610133831016604e8410600b8410161715611b55575081810a610f49565b611b5f8383611a9a565b805f1904821115611b7257611b7261189f565b029392505050565b5f61107360ff841683611adc565b8082028115828204841417610f4957610f4961189f56fea2646970667358221220ce2d768391317091ac7d72e42c833381eca5f1a6f4fb7e0def640e0d9dff538464736f6c63430008170033", + "nonce": "0x90", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x38211ee8646c4323b784f49474cf76db82c9c787c5eb5e2daefb0953b5c0646f", + "transactionType": "CREATE2", + "contractName": "MarketFactoryLibrary", + "contractAddress": "0xea61a6e3fe0c147a0989d4a526f5ccae940c7656", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x6dfcf4", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000615d22610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063310657f914610038575b5f80fd5b818015610043575f80fd5b50610057610052366004610165565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f8060405161008190610118565b604051809103905ff08015801561009a573d5f803e3d5ffd5b5087878787876040516024016100b4959493929190610282565b60408051601f198184030181529181526020820180516001600160e01b03166330d086f960e11b179052516100e890610126565b6100f392919061033d565b604051809103905ff08015801561010c573d5f803e3d5ffd5b50979650505050505050565b615563806200039a83390190565b6103f080620058fd83390190565b80356001600160a01b038116811461014a575f80fd5b919050565b5f60c0828403121561015f575f80fd5b50919050565b5f805f805f85870361028081121561017b575f80fd5b61018487610134565b9550610193886020890161014f565b94506101a28860e0890161014f565b9350604061019f19820112156101b6575f80fd5b6101a08701925060a06101df19820112156101cf575f80fd5b506101e0860190509295509295909350565b6001600160a01b036101f282610134565b168252602081013567ffffffffffffffff8116808214610210575f80fd5b80602085015250505050565b6001600160a01b038061022e83610134565b1683528061023e60208401610134565b1660208401528061025160408401610134565b1660408401528061026460608401610134565b1660608401528061027760808401610134565b166080840152505050565b5f6102808201905060018060a01b03808816835286356020840152602087013560408401526040870135606084015260608701356080840152608087013560a0840152806102d260a08901610134565b1660c084015250843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a08501356101808301526103256101a08301856101e1565b6103336101e083018461021c565b9695505050505050565b60018060a01b03831681525f60206040602084015283518060408501525f5b818110156103785785810183015185820160600152820161035c565b505f606082860101526060601f19601f83011685010192505050939250505056fe60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615463620001005f395f818161347d015281816134a601526135e701526154635ff3fe60806040526004361061030d575f3560e01c80635cbc51eb116101a3578063ad3cb1cc116100f2578063d8d933a511610092578063f45bf01c1161006d578063f45bf01c14610a9a578063f731a57a14610aad578063f85c3cd414610acc578063fd17174a14610aeb575f80fd5b8063d8d933a514610a55578063e05001f514610a68578063e5af06ce14610a7b575f80fd5b8063ccc96815116100cd578063ccc96815146109e5578063ccd8d4d114610a04578063d547741f14610a17578063d795f49414610a36575f80fd5b8063ad3cb1cc1461096a578063b5ec74871461099a578063ca40742c146109c6575f80fd5b80637dc0d1d01161015d5780638e572776116101385780638e5727761461090557806391d1485414610918578063a217fddf14610937578063ac9650d81461094a575f80fd5b80637dc0d1d01461089d5780637f417c06146108de5780638456cb59146108f1575f80fd5b80635cbc51eb1461068457806361a10df2146106b057806364eb0a71146106cf57806373d4a13a146106ee57806376c1b82f146108125780637c90a6ca1461083e575f80fd5b80632ed28ba21161025f5780633f4ba83a1161021957806352d1902d116101f457806352d1902d146105f757806354137c7e1461060b57806354fd4d501461062a5780635c975abb14610661575f80fd5b80633f4ba83a146105b15780634cbd882c146105c55780634f1ef286146105e4575f80fd5b80632ed28ba2146104f55780632f2ff15d1461052157806336568abe146105405780633746f8581461055f57806337501921146105725780633e3c119b1461059e575f80fd5b80631ca3b0cb116102ca5780632b4c9a20116102a55780632b4c9a20146104915780632c60185c146104a45780632cc884c5146104c35780632e106f21146104e2575f80fd5b80631ca3b0cb146103e55780631e5eb1d01461040e578063248a9ca314610472575f80fd5b806301ffc9a7146103115780630317b9df146103455780630cf8542f146103665780631970e5ea1461037957806319a7359b146103a65780631c4fd41c146103b9575b5f80fd5b34801561031c575f80fd5b5061033061032b366004613e72565b610afe565b60405190151581526020015b60405180910390f35b348015610350575f80fd5b5061036461035f366004613eaf565b610b34565b005b610364610374366004613ef0565b610c0c565b348015610384575f80fd5b50610398610393366004613f0a565b610ce1565b60405190815260200161033c565b6103646103b4366004613f21565b610cec565b3480156103c4575f80fd5b506103d86103d3366004613f0a565b610ea2565b60405161033c9190613f31565b3480156103f0575f80fd5b506103f9610f1d565b6040805192835260208301919091520161033c565b348015610419575f80fd5b50610422610f50565b60405161033c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201516001600160a01b03169181019190915260c00190565b34801561047d575f80fd5b5061039861048c366004613f0a565b611002565b61036461049f366004613ef0565b611022565b3480156104af575f80fd5b506103986104be366004613f57565b6110c8565b3480156104ce575f80fd5b506103986104dd366004613f8b565b6110fb565b6103646104f0366004613fb5565b6112a9565b348015610500575f80fd5b5061051461050f3660046140fa565b61134f565b60405161033c9190614142565b34801561052c575f80fd5b5061036461053b3660046141a1565b6113d0565b34801561054b575f80fd5b5061036461055a3660046141a1565b6113f2565b61036461056d366004613eaf565b61142a565b34801561057d575f80fd5b5061059161058c3660046140fa565b6114d0565b60405161033c91906141cf565b6103f96105ac36600461422b565b611551565b3480156105bc575f80fd5b506103646117c2565b3480156105d0575f80fd5b506103646105df366004614245565b6117f7565b6103646105f236600461426b565b611884565b348015610602575f80fd5b506103986118a3565b348015610616575f80fd5b50610398610625366004613f0a565b6118be565b348015610635575f80fd5b5060408051808201909152600681526576312e352e3160d01b60208201525b60405161033c9190614359565b34801561066c575f80fd5b505f8051602061540e8339815191525460ff16610330565b34801561068f575f80fd5b506106a361069e36600461436b565b6119e9565b60405161033c9190614454565b3480156106bb575f80fd5b506103646106ca366004614506565b611dfb565b3480156106da575f80fd5b506103306106e9366004613f0a565b612080565b3480156106f9575f80fd5b506107a160408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152506040805161010081018252601154815260125460208201526014546001600160a01b03908116928201929092526015548216606082015260165482166080820152601a54821660a0820152601854821660c082015260195490911660e082015290565b604080518251815260208084015190820152828201516001600160a01b039081169282019290925260608084015183169082015260808084015183169082015260a08084015183169082015260c08084015183169082015260e092830151909116918101919091526101000161033c565b34801561081d575f80fd5b5061083161082c366004613f0a565b61208c565b60405161033c9190614570565b348015610849575f80fd5b50610852612152565b60405161033c91905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156108a8575f80fd5b506108b16121f6565b6040805182516001600160a01b031681526020928301516001600160401b0316928101929092520161033c565b6103646108ec36600461457e565b612279565b3480156108fc575f80fd5b5061036461231d565b610364610913366004613ef0565b61234f565b348015610923575f80fd5b506103306109323660046141a1565b6125d3565b348015610942575f80fd5b506103985f81565b61095d6109583660046145df565b612609565b60405161033c919061461d565b348015610975575f80fd5b50610654604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156109a5575f80fd5b506109b96109b4366004613f0a565b61261e565b60405161033c919061467f565b3480156109d1575f80fd5b506103986109e036600461436b565b612704565b3480156109f0575f80fd5b506103306109ff366004613f0a565b612787565b610364610a12366004613eaf565b612792565b348015610a22575f80fd5b50610364610a313660046141a1565b612838565b348015610a41575f80fd5b50610364610a503660046146b3565b612854565b610364610a633660046140fa565b612a07565b610398610a76366004613ef0565b612b39565b348015610a86575f80fd5b50610330610a95366004613f0a565b612c8e565b610364610aa8366004614713565b612d0a565b348015610ab8575f80fd5b50610330610ac736600461436b565b612db5565b348015610ad7575f80fd5b50610398610ae6366004613f8b565b612dfe565b610364610af9366004614713565b612f3d565b5f6001600160e01b03198216637965db0b60e01b1480610b2e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f610b3e81612fe8565b60405163e57980dd60e01b815273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063e57980dd90610b77905f90869060040161472d565b5f6040518083038186803b158015610b8d575f80fd5b505af4158015610b9f573d5f803e3d5ffd5b5050604051634752b3b360e01b815273ba1b87a252dbb06e1bfa367898bbcf78e548f0489250634752b3b39150610bdc905f90869060040161472d565b5f6040518083038186803b158015610bf2575f80fd5b505af4158015610c04573d5f803e3d5ffd5b505050505050565b610c14612ff2565b604051638046123560e01b815273a079ad0c7c2620d368c68efcd57d286c1959c6ee90638046123590610c4d905f9085906004016147f0565b5f6040518083038186803b158015610c63575f80fd5b505af4158015610c75573d5f803e3d5ffd5b50506040516387e2411560e01b815273a079ad0c7c2620d368c68efcd57d286c1959c6ee92506387e241159150610cb2905f9085906004016147f0565b5f6040518083038186803b158015610cc8575f80fd5b505af4158015610cda573d5f803e3d5ffd5b5050505050565b5f610b2e8183613024565b610cf4612ff2565b604051631621030760e01b81527343d1c35eaff6779751cfcf6000c8d7c30dc4655a90631621030790610d2d905f908590600401614804565b5f6040518083038186803b158015610d43575f80fd5b505af4158015610d55573d5f803e3d5ffd5b505060405163b71df57f60e01b81525f92507343d1c35eaff6779751cfcf6000c8d7c30dc4655a915063b71df57f90610d949084908690600401614804565b602060405180830381865af4158015610daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd39190614876565b90505f19826020013503610e64577315f42baf389652cc0904f6fcc54b907a1147a7ab632d77afb65f610e09602086018661436b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015b5f6040518083038186803b158015610e4d575f80fd5b505af4158015610e5f573d5f803e3d5ffd5b505050505b60405163bfbfe8ab60e01b81525f6004820152602481018290527341c3ce7663a7b06faacf8d62574999f3ca1d753a9063bfbfe8ab90604401610bdc565b6040516303eb153f60e51b81525f60048201819052602482018390529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610ef9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e919061488d565b6011545f908190610f2f9082906148bf565b610f3b60025f196148d2565b601254610f4891906148bf565b915091509091565b610f8c6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b6040516386617e7760e01b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f048906386617e779060240160c060405180830381865af4158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd91906148f1565b905090565b5f9081525f805160206153ee833981519152602052604090206001015490565b61102a612ff2565b60405163010cc09b60e21b8152730a7cc36c14f766a8561f95a0a5af90f0da46c49a90630433026c90611063905f9085906004016147f0565b5f6040518083038186803b158015611079575f80fd5b505af415801561108b573d5f803e3d5ffd5b505060405163b8359e9760e01b8152730a7cc36c14f766a8561f95a0a5af90f0da46c49a925063b8359e979150610cb2905f9085906004016147f0565b5f815f036110e9576040516301c85f6760e71b815260040160405180910390fd5b6110f45f8484613224565b9392505050565b6001600160a01b0382165f908152600e60209081526040808320815180830183528154815282516001830180546080818802840181019096526060830181815288979496948701948492849184018282801561117457602002820191905f5260205f20905b815481526020019060010190808311611160575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156111ca57602002820191905f5260205f20905b8154815260200190600101908083116111b6575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561122057602002820191905f5260205f20905b81548152602001906001019080831161120c575b50505050508152505081525050905061123881613241565b156112565760405163309f293760e21b815260040160405180910390fd5b60408051606081018252600d546001600160801b03811682526001600160401b03600160801b820481166020840152600160c01b90910416918101919091526112a19082908561325a565b949350505050565b6112b1612ff2565b60405163603ed05b60e01b815273870b4573f23ec6490247a500603238e7754d3ebe9063603ed05b906112ea905f9085906004016149c3565b5f6040518083038186803b158015611300575f80fd5b505af4158015611312573d5f803e3d5ffd5b505060405163153f43e560e31b815273870b4573f23ec6490247a500603238e7754d3ebe925063a9fa1f289150610cb2905f9085906004016149c3565b611357613d1f565b604051631c81982560e11b81527343d1c35eaff6779751cfcf6000c8d7c30dc4655a90633903304a90611390905f908690600401614a2b565b61014060405180830381865af41580156113ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614afe565b6113d982611002565b6113e281612fe8565b6113ec83836132f9565b50505050565b6001600160a01b038116331461141b5760405163334bd91960e11b815260040160405180910390fd5b611425828261339a565b505050565b611432612ff2565b604051634cf319b960e11b81527341b733fe827a5cc663f795e0a0b2100aa7fa6d16906399e633729061146b905f908590600401614c32565b5f6040518083038186803b158015611481575f80fd5b505af4158015611493573d5f803e3d5ffd5b505060405163339bb63160e01b81527341b733fe827a5cc663f795e0a0b2100aa7fa6d16925063339bb6319150610cb2905f908590600401614c32565b6114d8613d65565b60405163301d1d1560e21b81527342e124065d379e6cfc0c8554c73eae439ef8eb859063c074745490611511905f908690600401614a2b565b61012060405180830381865af415801561152d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614c4a565b5f8061155b612ff2565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61158581612fe8565b604051639f53ee0f60e01b81527344a956a465dddf7809b0d99a1b2aa90e4b01971990639f53ee0f906115be905f908890600401614ceb565b5f6040518083038186803b1580156115d4575f80fd5b505af41580156115e6573d5f803e3d5ffd5b505060405163647a4b7560e11b81525f92507344a956a465dddf7809b0d99a1b2aa90e4b019719915063c8f496ea906116259084908990600401614ceb565b606060405180830381865af4158015611640573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116649190614cff565b909550935090507315f42baf389652cc0904f6fcc54b907a1147a7ab632d77afb65f6116966040890160208a0161436b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b1580156116d9575f80fd5b505af41580156116eb573d5f803e3d5ffd5b5050604051636e6595c160e01b81527344a956a465dddf7809b0d99a1b2aa90e4b0197199250636e6595c1915061172a905f9089908990600401614d2a565b5f6040518083038186803b158015611740575f80fd5b505af4158015611752573d5f803e3d5ffd5b505060405163bfbfe8ab60e01b81525f6004820152602481018490527341c3ce7663a7b06faacf8d62574999f3ca1d753a925063bfbfe8ab91506044015f6040518083038186803b1580156117a5575f80fd5b505af41580156117b7573d5f803e3d5ffd5b505050505050915091565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6117ec81612fe8565b6117f4613413565b50565b7f1eae1854c74a696c6de86fd3c6383d5c1e2c33fbc86e1aa6b6c872d95bd2403861182181612fe8565b600d80546001600160801b038481166001600160c01b031983168117600160801b426001600160401b031602179093556040519116919082907f5dd867e3010e89c86273dfd293660a318f5751183db3eb823fccb822db1798d9905f90a3505050565b61188c613472565b61189582613516565b61189f8282613520565b5050565b5f6118ac6135dc565b505f805160206153ce83398151915290565b604051634c9829bf60e11b81525f600482018190526024820183905290819073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015611917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193b9190614876565b6040805160808101825282546001600160a01b03168152600183015460208201526002830154818301526003909201546060830152516345ffd36d60e01b815290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc906345ffd36d906119aa905f908590600401614d4c565b602060405180830381865af41580156119c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f49190614876565b6119f1613d9c565b604080516001600160a01b0384165f908152600e60209081529083902061016083018452805461012084019081528451600183018054608095810283018601909752606082018781529596879660a088019687959487946101408b01949193909284928491840182828015611a8357602002820191905f5260205f20905b815481526020019060010190808311611a6f575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611ad957602002820191905f5260205f20905b815481526020019060010190808311611ac5575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611b2f57602002820191905f5260205f20905b815481526020019060010190808311611b1b575b505050505081525050815250508152602001600482016040518060400160405290815f8201548152602001600182016040518060600160405290815f8201805480602002602001604051908101604052809291908181526020018280548015611bb557602002820191905f5260205f20905b815481526020019060010190808311611ba1575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c0b57602002820191905f5260205f20905b815481526020019060010190808311611bf7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c6157602002820191905f5260205f20905b815481526020019060010190808311611c4d575b505050919092525050509052508152600882015460208083019190915260099092015460ff1615156040918201529183526001600160a01b0386811691840182905260165483516370a0823160e01b815260048101939093529390920192909116906370a0823190602401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190614876565b8152601a546040516370a0823160e01b81526001600160a01b038681166004830152602090930192909116906370a0823190602401602060405180830381865afa158015611d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7f9190614876565b81526018546040516370a0823160e01b81526001600160a01b038681166004830152602090930192909116906370a0823190602401602060405180830381865afa158015611dcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df39190614876565b905292915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611e3f5750825b90505f826001600160401b03166001148015611e5a5750303b155b905081158015611e68575080155b15611e865760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611eb057845460ff60401b1916600160401b1785555b6040516369777eb960e01b815273e38a640174c8ff20a89a272967f960538be06b44906369777eb990611ef1905f908e908e908e908e908e90600401614e9d565b5f6040518083038186803b158015611f07575f80fd5b505af4158015611f19573d5f803e3d5ffd5b50505050611f25613625565b611f2d61362d565b611f35613625565b604051632ffdac7160e21b815273e38a640174c8ff20a89a272967f960538be06b449063bff6b1c490611f74905f908d908d908d908d90600401614f27565b5f6040518083038186803b158015611f8a575f80fd5b505af4158015611f9c573d5f803e3d5ffd5b50505050611fac5f801b8b6132f9565b50611fd77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8b6132f9565b506120027ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab8b6132f9565b5061202d7f1eae1854c74a696c6de86fd3c6383d5c1e2c33fbc86e1aa6b6c872d95bd240388b6132f9565b50831561207457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6011545f908210610b2e565b612094613dd6565b604051633978289f60e01b81525f60048201526024810183905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156120e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210c9190614876565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff1615156020820152600183015491810191909152600290910154606082015292915050565b6121856040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b604051636e9bc7eb60e11b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063dd378fd69060240160c060405180830381865af41580156121d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190614f96565b604080518082019091525f8082526020820152604051631ae5e80160e31b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063d72f4008906024016040805180830381865af4158015612255573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190614fee565b612281612ff2565b6040516210aa0b60e31b8152739f239921a3076cc9a0d24b28adebd52edd6895a29062855058906122b8905f90859060040161504a565b5f6040518083038186803b1580156122ce575f80fd5b505af41580156122e0573d5f803e3d5ffd5b50506040516364140a8360e01b8152739f239921a3076cc9a0d24b28adebd52edd6895a292506364140a839150610cb2905f90859060040161504a565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61234781612fe8565b6117f461363d565b612357612ff2565b604051634ec6ce5b60e11b81525f60048201819052336024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401602060405180830381865af41580156123ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d19190615082565b604051634bc1120160e01b81529091507382b512fac9c21356bf5a050c710d4de7b7ff6eda90634bc112019061240d905f90869060040161509d565b5f6040518083038186803b158015612423575f80fd5b505af4158015612435573d5f803e3d5ffd5b50506040516332f4053b60e01b81527382b512fac9c21356bf5a050c710d4de7b7ff6eda92506332f4053b9150612472905f90869060040161509d565b5f6040518083038186803b158015612488575f80fd5b505af415801561249a573d5f803e3d5ffd5b5050604051634ec6ce5b60e11b81525f6004820181905233602483015292507315f42baf389652cc0904f6fcc54b907a1147a7ab9150639d8d9cb690604401602060405180830381865af41580156124f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125189190615082565b9050811580156125255750805b156114255760405163046dbd1360e11b81525f60048201523360248201819052907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015612580573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a49190614876565b60405163092ceea960e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b5f9182525f805160206153ee833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060612613612ff2565b6110f45f8484613685565b61264e60405180608001604052805f6001600160a01b031681526020015f81526020015f81526020015f81525090565b604051634c9829bf60e11b81525f60048201526024810183905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af41580156126a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c69190614876565b6040805160808101825282546001600160a01b0316815260018301546020820152600283015491810191909152600390910154606082015292915050565b60405163046dbd1360e11b81525f600482018190526001600160a01b0383166024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015612763573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614876565b5f610b2e81836139ec565b61279a612ff2565b6040516329de607960e01b8152732ffe1bf4e74f15cefe68f13e2a40a9fb041bef29906329de6079906127d3905f908590600401614c32565b5f6040518083038186803b1580156127e9575f80fd5b505af41580156127fb573d5f803e3d5ffd5b50506040516309f18b1960e11b8152732ffe1bf4e74f15cefe68f13e2a40a9fb041bef2992506313e316329150610cb2905f908590600401614c32565b61284182611002565b61284a81612fe8565b6113ec838361339a565b5f61285e81612fe8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460969190600160401b900460ff16806128a7575080546001600160401b03808416911610155b156128c55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155604051636ab187cd60e11b815273e38a640174c8ff20a89a272967f960538be06b449063d5630f9a90612923905f908a908a908a906004016150c5565b5f6040518083038186803b158015612939575f80fd5b505af415801561294b573d5f803e3d5ffd5b5050604051633664147f60e01b815273e38a640174c8ff20a89a272967f960538be06b449250633664147f915061298c905f908a908a908a906004016150c5565b5f6040518083038186803b1580156129a2575f80fd5b505af41580156129b4573d5f803e3d5ffd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b612a0f612ff2565b604051630dd8fb6560e21b81527342e124065d379e6cfc0c8554c73eae439ef8eb8590633763ed9490612a48905f908590600401614a2b565b5f6040518083038186803b158015612a5e575f80fd5b505af4158015612a70573d5f803e3d5ffd5b505060405163d73654eb60e01b81525f92507342e124065d379e6cfc0c8554c73eae439ef8eb85915063d73654eb90612aaf9084908690600401614a2b565b602060405180830381865af4158015612aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aee9190614876565b90505f19826020015103610e64576040516316bbd7db60e11b81525f60048201523360248201527315f42baf389652cc0904f6fcc54b907a1147a7ab90632d77afb690604401610e37565b5f612b42612ff2565b6040516320b5435f60e11b815273b5a851ebd5d501607af946d36496ebce3eb9b1d49063416a86be90612b7b905f90869060040161509d565b5f6040518083038186803b158015612b91575f80fd5b505af4158015612ba3573d5f803e3d5ffd5b5050604051630d0699cb60e21b815273b5a851ebd5d501607af946d36496ebce3eb9b1d4925063341a672c9150612be0905f90869060040161509d565b602060405180830381865af4158015612bfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1f9190614876565b60405163489d188160e01b815290915073b5a851ebd5d501607af946d36496ebce3eb9b1d49063489d188190612c5d905f908690869060040161512a565b5f6040518083038186803b158015612c73575f80fd5b505af4158015612c85573d5f803e3d5ffd5b50505050919050565b604051631928c8e960e11b81525f6004820181905260248201839052907315f42baf389652cc0904f6fcc54b907a1147a7ab9063325191d2906044015b602060405180830381865af4158015612ce6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190615082565b612d12612ff2565b604051635792057f60e11b81525f600482015281356024820152731658c459ee72984769438696c82e419c137484fe9063af240afe906044015f6040518083038186803b158015612d61575f80fd5b505af4158015612d73573d5f803e3d5ffd5b50506040516320e9b9f960e11b81525f600482015283356024820152731658c459ee72984769438696c82e419c137484fe92506341d373f29150604401610cb2565b604051634ec6ce5b60e11b81525f600482018190526001600160a01b0383166024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401612ccb565b6001600160a01b0382165f908152600e602090815260408083208151808301835260048201805482528351600590930180546080818802860181019096526060850181815288979496939594870194938492849184018282801561117457602002820191905f5260205f20908154815260200190600101908083116111605750505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156111ca57602002820191905f5260205f20908154815260200190600101908083116111b657505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561122057602002820191905f5260205f209081548152602001906001019080831161120c5750505050508152505081525050905061123881613241565b612f45612ff2565b6040516306241a0160e51b81525f6004820152813560248201527349d3e25408fc670db9a3e83ad3ae92c85235a9579063c4834020906044015f6040518083038186803b158015612f94575f80fd5b505af4158015612fa6573d5f803e3d5ffd5b5050604051632981ae3960e21b81525f6004820152833560248201527349d3e25408fc670db9a3e83ad3ae92c85235a957925063a606b8e49150604401610cb2565b6117f48133613a0f565b5f8051602061540e8339815191525460ff16156130225760405163d93c066560e01b815260040160405180910390fd5b565b5f6110f483600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a09190614876565b6130ab90600a615240565b6130b5908461524b565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa1580156130ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131239190615262565b61312e90600a615282565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015613178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319c9190615262565b6131a790600a615282565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa1580156131f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132159190614876565b61321f919061524b565b613a48565b5f6112a1836132338685613a54565b670de0b6b3a7640000613a48565b80515f90158015610b2e5750610b2e8260200151613a67565b5f815f0361327b576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a916132ba919087908790600401615290565b602060405180830381865af41580156132d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a19190614876565b5f5f805160206153ee83398151915261331284846125d3565b613391575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556133473390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b2e565b5f915050610b2e565b5f5f805160206153ee8339815191526133b384846125d3565b15613391575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b2e565b61341b613a8d565b5f8051602061540e833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806134f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166134ec5f805160206153ce833981519152546001600160a01b031690565b6001600160a01b031614155b156130225760405163703e46dd60e11b815260040160405180910390fd5b5f61189f81612fe8565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561357a575060408051601f3d908101601f1916820190925261357791810190614876565b60015b6135a257604051634c9c8ce360e01b81526001600160a01b03831660048201526024016125ca565b5f805160206153ce83398151915281146135d257604051632a87526960e21b8152600481018290526024016125ca565b6114258383613abc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146130225760405163703e46dd60e11b815260040160405180910390fd5b613022613b11565b613635613b11565b613022613b5a565b613645612ff2565b5f8051602061540e833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613454565b60198301805460ff60a01b1916600160a01b179055601a830154604080516318160ddd60e01b815290516060925f926001600160a01b03909116916318160ddd916004808201926020929091908290030181865afa1580156136e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370d9190614876565b90505f85600e01600a015f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137899190614876565b9050836001600160401b038111156137a3576137a3613feb565b6040519080825280602002602001820160405280156137d657816020015b60608152602001906001900390816137c15790505b5092505f5b8481101561386957613844308787848181106137f9576137f961535c565b905060200281019061380b9190615370565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250613b7a92505050565b8482815181106138565761385661535c565b60209081029190910101526001016137db565b50601a860154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156138b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138d79190614876565b90505f87600e01600a015f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561392f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139539190614876565b60405163111a6a5d60e31b8152600481018a9052602481018690526044810185905260648101849052608481018290529091507341c3ce7663a7b06faacf8d62574999f3ca1d753a906388d352e89060a4015f6040518083038186803b1580156139bb575f80fd5b505af41580156139cd573d5f803e3d5ffd5b5050506019909801805460ff60a01b1916905550929695505050505050565b5f6139f960025f196148d2565b82101580156110f4575050601291909101541190565b613a1982826125d3565b61189f5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016125ca565b5f6112a1848484613bec565b81545f906110f490836301e13380613a48565b8051515f90158015613a7c5750602082015151155b8015610b2e57505060400151511590565b5f8051602061540e8339815191525460ff1661302257604051638dfc202b60e01b815260040160405180910390fd5b613ac582613c18565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613b09576114258282613b7a565b61189f613c7b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661302257604051631afcd79f60e31b815260040160405180910390fd5b613b62613b11565b5f8051602061540e833981519152805460ff19169055565b60605f80846001600160a01b031684604051613b9691906153b2565b5f60405180830381855af49150503d805f8114613bce576040519150601f19603f3d011682016040523d82523d5f602084013e613bd3565b606091505b5091509150613be3858383613c9a565b95945050505050565b5f825f190484118302158202613c095763ad251c275f526004601cfd5b50910281810615159190040190565b806001600160a01b03163b5f03613c4d57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016125ca565b5f805160206153ce83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b34156130225760405163b398979f60e01b815260040160405180910390fd5b606082613caf57613caa82613cf6565b6110f4565b8151158015613cc657506001600160a01b0384163b155b15613cef57604051639996b31560e01b81526001600160a01b03851660048201526024016125ca565b50806110f4565b805115613d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e00160405280613d32613dd6565b81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280613d78613dd6565b81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a00160405280613daf613e05565b81526020015f6001600160a01b031681526020015f81526020015f81526020015f81525090565b60405180608001604052805f6001600160a01b031681526020015f151581526020015f81526020015f81525090565b6040518060800160405280613e18613e38565b8152602001613e25613e38565b81525f6020820181905260409091015290565b60405180604001604052805f8152602001613e6d60405180606001604052806060815260200160608152602001606081525090565b905290565b5f60208284031215613e82575f80fd5b81356001600160e01b0319811681146110f4575f80fd5b5f60408284031215613ea9575f80fd5b50919050565b5f60208284031215613ebf575f80fd5b81356001600160401b03811115613ed4575f80fd5b6112a184828501613e99565b5f60608284031215613ea9575f80fd5b5f60608284031215613f00575f80fd5b6110f48383613ee0565b5f60208284031215613f1a575f80fd5b5035919050565b5f60e08284031215613ea9575f80fd5b6020810160038310613f5157634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8060408385031215613f68575f80fd5b50508035926020909101359150565b6001600160a01b03811681146117f4575f80fd5b5f8060408385031215613f9c575f80fd5b8235613fa781613f77565b946020939093013593505050565b5f60208284031215613fc5575f80fd5b81356001600160401b03811115613fda575f80fd5b8201608081850312156110f4575f80fd5b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561402157614021613feb565b60405290565b60405160c081016001600160401b038111828210171561402157614021613feb565b604051601f8201601f191681016001600160401b038111828210171561407157614071613feb565b604052919050565b80151581146117f4575f80fd5b5f60e08284031215614096575f80fd5b61409e613fff565b905081356140ab81613f77565b808252506020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c08201356140ef81614079565b60c082015292915050565b5f60e0828403121561410a575f80fd5b6110f48383614086565b80516001600160a01b0316825260208082015115159083015260408082015190830152606090810151910152565b5f61014082019050614155828451614114565b60018060a01b036020840151166080830152604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015260c083015161012083015292915050565b5f80604083850312156141b2575f80fd5b8235915060208301356141c481613f77565b809150509250929050565b5f610120820190506141e2828451614114565b60208301516080830152604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015292915050565b5f60a08284031215613ea9575f80fd5b5f60a0828403121561423b575f80fd5b6110f4838361421b565b5f60208284031215614255575f80fd5b81356001600160801b03811681146110f4575f80fd5b5f806040838503121561427c575f80fd5b823561428781613f77565b91506020838101356001600160401b03808211156142a3575f80fd5b818601915086601f8301126142b6575f80fd5b8135818111156142c8576142c8613feb565b6142da601f8201601f19168501614049565b915080825287848285010111156142ef575f80fd5b80848401858401375f848284010152508093505050509250929050565b5f5b8381101561432657818101518382015260200161430e565b50505f910152565b5f815180845261434581602086016020860161430c565b601f01601f19169290920160200192915050565b602081525f6110f4602083018461432e565b5f6020828403121561437b575f80fd5b81356110f481613f77565b5f815180845260208085019450602084015f5b838110156143b557815187529582019590820190600101614399565b509495945050505050565b805182525f6020808301516040828601528051606060408701526143e760a0870182614386565b83830151603f19888303810160608a0152815180845291860193505f929091908601905b8084101561442b578451825293860193600193909301929086019061440b565b5060408501519550818982030160808a01526144478187614386565b9998505050505050505050565b602081525f825160a060208401528051608060c08501526144796101408501826143c0565b9050602082015160bf198583030160e086015261449682826143c0565b915050604082015161010085015260608201511515610120850152602085015191506144cd60408501836001600160a01b03169052565b6040850151606085015260608501516080850152608085015160a0850152809250505092915050565b5f60c08284031215613ea9575f80fd5b5f805f805f610280868803121561451b575f80fd5b853561452681613f77565b945061453587602088016144f6565b93506145448760e088016144f6565b9250614554876101a08801613e99565b9150614564876101e0880161421b565b90509295509295909350565b60808101610b2e8284614114565b5f6040828403121561458e575f80fd5b6110f48383613e99565b5f8083601f8401126145a8575f80fd5b5081356001600160401b038111156145be575f80fd5b6020830191508360208260051b85010111156145d8575f80fd5b9250929050565b5f80602083850312156145f0575f80fd5b82356001600160401b03811115614605575f80fd5b61461185828601614598565b90969095509350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561467257603f1988860301845261466085835161432e565b94509285019290850190600101614644565b5092979650505050505050565b81516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808101610b2e565b5f805f604084860312156146c5575f80fd5b83356146d081613f77565b925060208401356001600160401b038111156146ea575f80fd5b6146f686828701614598565b9497909650939450505050565b5f60208284031215613ea9575f80fd5b5f60208284031215614723575f80fd5b6110f48383614703565b828152604060208201525f8235601e1984360301811261474b575f80fd5b83016020810190356001600160401b03811115614766575f80fd5b803603821315614774575f80fd5b604080850152806080850152808260a08601375f60a082860101526020850135606085015260a0601f19601f830116850101925050509392505050565b80356147bc81613f77565b6001600160a01b039081168352602082810135908401526040820135906147e282613f77565b808216604085015250505050565b828152608081016110f460208301846147b1565b8281526101008101823561481781613f77565b60018060a01b038116602084015250602083013560408301526040830135606083015260608301356080830152608083013560a083015260a083013560c083015260c083013561486681614079565b80151560e0840152509392505050565b5f60208284031215614886575f80fd5b5051919050565b5f6020828403121561489d575f80fd5b8151600381106110f4575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b2e57610b2e6148ab565b5f826148ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60c08284031215614901575f80fd5b614909614027565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015161494381613f77565b60a08201529392505050565b5f808335601e19843603018112614964575f80fd5b83016020810192503590506001600160401b03811115614982575f80fd5b8060051b36038213156145d8575f80fd5b8183525f6001600160fb1b038311156149aa575f80fd5b8260051b80836020870137939093016020019392505050565b82815260406020820152813560408201525f60208301356149e381614079565b1515606083015260408301356149f881614079565b15156080830152614a0c606084018461494f565b608060a0850152614a2160c085018284614993565b9695505050505050565b82815261010081016110f4602083018480516001600160a01b031682526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0818101519083015260c0908101511515910152565b5f60808284031215614a97575f80fd5b604051608081018181106001600160401b0382111715614ab957614ab9613feb565b80604052508091508251614acc81613f77565b81526020830151614adc81614079565b8060208301525060408301516040820152606083015160608201525092915050565b5f6101408284031215614b0f575f80fd5b614b17613fff565b614b218484614a87565b81526080830151614b3181613f77565b8060208301525060a0830151604082015260c0830151606082015260e0830151608082015261010083015160a082015261012083015160c08201528091505092915050565b803582525f602080830135605e19843603018112614b92575f80fd5b6040858301528301614ba4818061494f565b60606040880152614bb960a088018284614993565b915050614bc88383018361494f565b603f19888403810160608a015281845291925f929086015b82841015614bfe578435815293860193600193909301928601614be0565b614c0b604087018761494f565b97509550818a82030160808b0152614c24818888614993565b9a9950505050505050505050565b828152604060208201525f6112a16040830184614b76565b5f6101208284031215614c5b575f80fd5b614c63614027565b614c6d8484614a87565b81526080830151602082015260a0830151604082015260c0830151606082015260e0830151608082015261010083015160a08201528091505092915050565b803582526020810135614cbe81613f77565b6001600160a01b031660208301526040818101359083015260608082013590830152608090810135910152565b82815260c081016110f46020830184614cac565b5f805f60608486031215614d11575f80fd5b8351925060208401519150604084015190509250925092565b83815260e08101614d3e6020830185614cac565b8260c0830152949350505050565b82815260a081016110f4602083018480516001600160a01b031682526020808201519083015260408082015190830152606090810151910152565b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a0810135614dc181613f77565b6001600160a01b031660a0929092019190915250565b6001600160401b03811681146117f4575f80fd5b8035614df681613f77565b6001600160a01b031682526020810135614e0f81614dd7565b6001600160401b0381166020840152505050565b8035614e2e81613f77565b6001600160a01b039081168352602082013590614e4a82613f77565b9081166020840152604082013590614e6182613f77565b9081166040840152606082013590614e7882613f77565b9081166060840152608082013590614e8f82613f77565b808216608085015250505050565b8681526001600160a01b03861660208201526102a08101614ec16040830187614d87565b8435610100830152602085013561012083015260408501356101408301526060850135610160830152608085013561018083015260a08501356101a0830152614f0e6101c0830185614deb565b614f1c610200830184614e23565b979650505050505050565b8581526102808101614f3c6020830187614d87565b843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a0850135610180830152614f886101a0830185614deb565b614a216101e0830184614e23565b5f60c08284031215614fa6575f80fd5b614fae614027565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b5f60408284031215614ffe575f80fd5b604051604081018181106001600160401b038211171561502057615020613feb565b604052825161502e81613f77565b8152602083015161503e81614dd7565b60208201529392505050565b5f60608201905083825282356020830152602083013561506981613f77565b6001600160a01b03166040929092019190915292915050565b5f60208284031215615092575f80fd5b81516110f481614079565b828152608081016110f460208301848035825260208082013590830152604090810135910152565b8481526001600160a01b0384811660208084019190915260606040840181905283018490525f9185919060808501845b8781101561511c57843561510881613f77565b8316825293830193908301906001016150f5565b509998505050505050505050565b83815260a0810161515260208301858035825260208082013590830152604090810135910152565b826080830152949350505050565b600181815b8085111561519a57815f1904821115615180576151806148ab565b8085161561518d57918102915b93841c9390800290615165565b509250929050565b5f826151b057506001610b2e565b816151bc57505f610b2e565b81600181146151d257600281146151dc576151f8565b6001915050610b2e565b60ff8411156151ed576151ed6148ab565b50506001821b610b2e565b5060208310610133831016604e8410600b841016171561521b575081810a610b2e565b6152258383615160565b805f1904821115615238576152386148ab565b029392505050565b5f6110f483836151a2565b8082028115828204841417610b2e57610b2e6148ab565b5f60208284031215615272575f80fd5b815160ff811681146110f4575f80fd5b5f6110f460ff8416836151a2565b60a081525f8451606060a08401526152ac610100840182614386565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b808410156152f357855182529484019460019390930192908401906152d3565b5060408a01519450818782030160e088015261530f8186614386565b955050505061534c8185018780516001600160801b031682526020808201516001600160401b039081169184019190915260409182015116910152565b5050826080830152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112615385575f80fd5b8301803591506001600160401b0382111561539e575f80fd5b6020019150368190038213156145d8575f80fd5b5f82516153c381846020870161430c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220f690191a6755c4a508fe256dbe11334c38dadf431860e56a47f731922ff762da64736f6c6343000817003360806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220ef658173ec6442fec70f959a724d6a3e10076c082fad49fbe00ede42118994d064736f6c63430008170033a264697066735822122015f8640e98224d5be3c07ebf635c3e0b3a91c051946ab79ef23aa1be03b3364464736f6c63430008170033", + "nonce": "0x91", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionType": "CREATE", + "contractName": "SizeFactory", + "contractAddress": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "gas": "0x2d7466", + "value": "0x0", + "input": "0x60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516127f7620001005f395f818161163d0152818161166601526117aa01526127f75ff3fe6080604052600436106101f1575f3560e01c806389fd57b111610108578063d152e2361161009d578063ec2c90161161006d578063ec2c90161461055d578063ef09657214610571578063f2fde38b14610590578063f91d443f146105af578063fceb0024146105ce575f80fd5b8063d152e236146104ec578063db9132361461050b578063e30c39781461052a578063eb44fdd31461053e575f80fd5b8063ad3cb1cc116100d8578063ad3cb1cc1461046a578063b4208ef21461049a578063b7621145146104ae578063c4d66de8146104cd575f80fd5b806389fd57b1146104045780638da5cb5b146104185780638e6ee8e51461042c57806393e306331461044b575f80fd5b806357a94beb116101895780636ca42ae3116101595780636ca42ae3146103885780636ec934da146103a9578063715018a6146103c85780637643d7ec146103dc57806379ba5097146103f0575f80fd5b806357a94beb146103155780635a58a812146103345780635dbd6102146103485780636c59803b14610367575f80fd5b806327fa35c3116101c457806327fa35c3146102a15780634f1ef286146102b557806352d1902d146102ca57806354fd4d50146102de575f80fd5b8063025e0812146101f557806307d4e090146102295780630bb6842d1461026057806317180f341461027f575b5f80fd5b348015610200575f80fd5b5061021461020f366004611e5f565b6105ed565b60405190151581526020015b60405180910390f35b348015610234575f80fd5b50610248610243366004611e8a565b610605565b6040516001600160a01b039091168152602001610220565b34801561026b575f80fd5b5061021461027a366004611e5f565b6106a7565b34801561028a575f80fd5b506102936106b9565b604051908152602001610220565b3480156102ac575f80fd5b506102936106c9565b6102c86102c3366004611f87565b6106d3565b005b3480156102d5575f80fd5b506102936106f2565b3480156102e9575f80fd5b5060408051808201909152600681526576312e352e3160d01b60208201525b6040516102209190612060565b348015610320575f80fd5b5061021461032f366004611e5f565b61070d565b34801561033f575f80fd5b50610293610719565b348015610353575f80fd5b50610214610362366004611e5f565b610724565b348015610372575f80fd5b5061037b61079f565b6040516102209190612072565b348015610393575f80fd5b5061039c61089d565b60405161022091906120d4565b3480156103b4575f80fd5b506102146103c3366004611e5f565b610934565b3480156103d3575f80fd5b506102c861093f565b3480156103e7575f80fd5b5061037b610952565b3480156103fb575f80fd5b506102c8610c7c565b34801561040f575f80fd5b5061039c610cc9565b348015610423575f80fd5b50610248610d60565b348015610437575f80fd5b50610248610446366004612120565b610d94565b348015610456575f80fd5b50610214610465366004611e5f565b610e47565b348015610475575f80fd5b50610308604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156104a5575f80fd5b5061037b610e59565b3480156104b9575f80fd5b506102146104c8366004611e5f565b611093565b3480156104d8575f80fd5b506102c86104e7366004611e5f565b61109f565b3480156104f7575f80fd5b5061024861050636600461216a565b6111bb565b348015610516575f80fd5b50610214610525366004611e5f565b61124b565b348015610535575f80fd5b506102486112c5565b348015610549575f80fd5b50610248610558366004612223565b6112ed565b348015610568575f80fd5b5061039c6112f8565b34801561057c575f80fd5b5061024861058b366004612223565b61138d565b34801561059b575f80fd5b506102c86105aa366004611e5f565b611399565b3480156105ba575f80fd5b506102486105c9366004612223565b61141e565b3480156105d9575f80fd5b506102146105e8366004611e5f565b61142a565b5f6105f66114a5565b6105ff826114d7565b92915050565b5f61060e6114a5565b73ea61a6e3fe0c147a0989d4a526f5ccae940c765663310657f9610630610d60565b878787876040518663ffffffff1660e01b81526004016106549594939291906122f0565b602060405180830381865af415801561066f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069391906123ab565b905061069e81611548565b50949350505050565b5f6106b06114a5565b6105ff826115b8565b5f6106c46002611629565b905090565b5f6106c45f611629565b6106db611632565b6106e4826116d6565b6106ee82826116de565b5050565b5f6106fb61179f565b505f805160206127a283398151915290565b5f6105ff6002836117e8565b5f6106c46004611629565b5f61072d6114a5565b6001600160a01b0382166107545760405163de0ce17d60e01b815260040160405180910390fd5b61075f60048361180c565b9050801515826001600160a01b03167f8d73d27027613eea51b73041fbb3e53c27e7fed218a338331989912b6c4b4be860405160405180910390a3919050565b60606107ab6004611629565b6001600160401b038111156107c2576107c2611ef4565b6040519080825280602002602001820160405280156107f557816020015b60608152602001906001900390816107e05790505b5090505f5b8151811015610899575f61080f600483611820565b9050806001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561084c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261087391908101906123c6565b8383815181106108855761088561242e565b6020908102919091010152506001016107fa565b5090565b60606108a96002611629565b6001600160401b038111156108c0576108c0611ef4565b6040519080825280602002602001820160405280156108e9578160200160208202803683370190505b5090505f5b815181101561089957610902600282611820565b8282815181106109145761091461242e565b6001600160a01b03909216602092830291909101909101526001016108ee565b5f6105ff81836117e8565b6109476114a5565b6109505f61182b565b565b606061095d5f611629565b6001600160401b0381111561097457610974611ef4565b6040519080825280602002602001820160405280156109a757816020015b60608152602001906001900390816109925790505b5090505f5b8151811015610899575f6109c08183611820565b90505f610a3a6064836001600160a01b0316637c90a6ca6040518163ffffffff1660e01b815260040160c060405180830381865afa158015610a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a289190612442565b60200151670de0b6b3a7640000611863565b9050816001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040161010060405180830381865afa158015610a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9d91906124c4565b604001516001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610adb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0291908101906123c6565b826001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040161010060405180830381865afa158015610b3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6391906124c4565b606001516001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ba1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bc891908101906123c6565b610bd183611877565b846001600160a01b03166354fd4d506040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c0c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c3391908101906123c6565b604051602001610c46949392919061257d565b604051602081830303815290604052848481518110610c6757610c6761242e565b602090810291909101015250506001016109ac565b3380610c866112c5565b6001600160a01b031614610cbd5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610cc68161182b565b50565b6060610cd56004611629565b6001600160401b03811115610cec57610cec611ef4565b604051908082528060200260200182016040528015610d15578160200160208202803683370190505b5090505f5b815181101561089957610d2e600482611820565b828281518110610d4057610d4061242e565b6001600160a01b0390921660209283029190910190910152600101610d1a565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f610d9d6114a5565b73dc8504a256093b3ea224415afed3c6f401eabba1634299eb2d610dbf610d60565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015281871660248201529085166044820152606401602060405180830381865af4158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3591906123ab565b9050610e40816114d7565b5092915050565b5f610e506114a5565b6105ff82611548565b6060610e656002611629565b6001600160401b03811115610e7c57610e7c611ef4565b604051908082528060200260200182016040528015610eaf57816020015b6060815260200190600190039081610e9a5790505b5090505f5b8151811015610899575f610ec9600283611820565b9050806001600160a01b0316635001f3b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2b91906123ab565b6001600160a01b0316637284e4166040518163ffffffff1660e01b81526004015f60405180830381865afa158015610f65573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f8c91908101906123c6565b816001600160a01b031663999b93af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec91906123ab565b6001600160a01b0316637284e4166040518163ffffffff1660e01b81526004015f60405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261104d91908101906123c6565b60405160200161105e929190612609565b60405160208183030381529060405283838151811061107f5761107f61242e565b602090810291909101015250600101610eb4565b5f6105ff6004836117e8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110e35750825b90505f826001600160401b031660011480156110fe5750303b155b90508115801561110c575080155b1561112a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561115457845460ff60401b1916600160401b1785555b61115d86611906565b611165611917565b61116d611917565b83156111b357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f6111c46114a5565b60405163145b6cb960e11b8152735d4b12e547b462a16b2afd3ca821c77da986df97906328b6d972906111fb90859060040161265e565b602060405180830381865af4158015611216573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123a91906123ab565b9050611245816115b8565b50919050565b5f6112546114a5565b6001600160a01b03821661127b5760405163de0ce17d60e01b815260040160405180910390fd5b6112855f8361180c565b9050801515826001600160a01b03167f0e4a8f27c6352e6fe6149b046737df5653aa907ab5f60a2e6f44b9fbe74d36fa60405160405180910390a3919050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610d84565b5f6105ff8183611820565b60606113035f611629565b6001600160401b0381111561131a5761131a611ef4565b604051908082528060200260200182016040528015611343578160200160208202803683370190505b5090505f5b81518110156108995761135b5f82611820565b82828151811061136d5761136d61242e565b6001600160a01b0390921660209283029190910190910152600101611348565b5f6105ff600483611820565b6113a16114a5565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113e5610d60565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f6105ff600283611820565b5f6114336114a5565b6001600160a01b03821661145a5760405163de0ce17d60e01b815260040160405180910390fd5b61146560028361180c565b9050801515826001600160a01b03167f4192bb627423ed9ad89a0007e7b220e804aeac006b70f9f34283ad4f475b156e60405160405180910390a3919050565b336114ae610d60565b6001600160a01b0316146109505760405163118cdaa760e01b8152336004820152602401610cb4565b5f6001600160a01b0382166114ff5760405163de0ce17d60e01b815260040160405180910390fd5b61150a60048361191f565b6040519015915081906001600160a01b038416907f8728dad4104402ec48bfe4e6dbda57ccb04fde1b4c7d2781716125a6203d717d905f90a3919050565b5f6001600160a01b0382166115705760405163de0ce17d60e01b815260040160405180910390fd5b61157a5f8361191f565b6040519015915081906001600160a01b038416907f31b5222362b7d52d7e24d96723c4b09a0043f8b859a4eaeefd5c69c6c8ca5877905f90a3919050565b5f6001600160a01b0382166115e05760405163de0ce17d60e01b815260040160405180910390fd5b6115eb60028361191f565b6040519015915081906001600160a01b038416907f8ed7f0e9b2ee05a88d7dead0712832e6b8c32512e38cef5ee45c4f1816af204c905f90a3919050565b5f6105ff825490565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806116b857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116ac5f805160206127a2833981519152546001600160a01b031690565b6001600160a01b031614155b156109505760405163703e46dd60e11b815260040160405180910390fd5b610cc66114a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611738575060408051601f3d908101601f191682019092526117359181019061273c565b60015b61176057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610cb4565b5f805160206127a2833981519152811461179057604051632a87526960e21b815260048101829052602401610cb4565b61179a8383611933565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109505760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b5f611805836001600160a01b038416611988565b5f6118058383611a6b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106ee82611a91565b5f61186f848484611b01565b949350505050565b60605f61188383611b25565b60010190505f816001600160401b038111156118a1576118a1611ef4565b6040519080825280601f01601f1916602001820160405280156118cb576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846118d557509392505050565b61190e611bfc565b610cc681611c45565b610950611bfc565b5f611805836001600160a01b038416611c76565b61193c82611cc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156119805761179a8282611d25565b6106ee611d97565b5f8181526001830160205260408120548015611a62575f6119aa600183612753565b85549091505f906119bd90600190612753565b9050808214611a1c575f865f0182815481106119db576119db61242e565b905f5260205f200154905080875f0184815481106119fb576119fb61242e565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611a2d57611a2d612772565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ff565b5f9150506105ff565b5f825f018281548110611a8057611a8061242e565b905f5260205f200154905092915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f825f190484118302158202611b1e5763ad251c275f526004601cfd5b5091020490565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b635772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b8f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611bad57662386f26fc10000830492506010015b6305f5e1008310611bc5576305f5e100830492506008015b6127108310611bd957612710830492506004015b60648310611beb576064830492506002015b600a83106105ff5760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661095057604051631afcd79f60e31b815260040160405180910390fd5b611c4d611bfc565b6001600160a01b038116610cbd57604051631e4fbdf760e01b81525f6004820152602401610cb4565b5f818152600183016020526040812054611cbb57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ff565b505f6105ff565b806001600160a01b03163b5f03611cf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610cb4565b5f805160206127a283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611d419190612786565b5f60405180830381855af49150503d805f8114611d79576040519150601f19603f3d011682016040523d82523d5f602084013e611d7e565b606091505b5091509150611d8e858383611db6565b95945050505050565b34156109505760405163b398979f60e01b815260040160405180910390fd5b606082611dcb57611dc682611e12565b611805565b8151158015611de257506001600160a01b0384163b155b15611e0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610cb4565b5080611805565b805115611e225780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610cc6575f80fd5b8035611e5a81611e3b565b919050565b5f60208284031215611e6f575f80fd5b813561180581611e3b565b5f60c08284031215611245575f80fd5b5f805f80848603610260811215611e9f575f80fd5b611ea98787611e7a565b9450611eb88760c08801611e7a565b9350604061017f1982011215611ecc575f80fd5b6101808601925060a06101bf1982011215611ee5575f80fd5b509295919450926101c0019150565b634e487b7160e01b5f52604160045260245ffd5b60405161014081016001600160401b0381118282101715611f2b57611f2b611ef4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f5957611f59611ef4565b604052919050565b5f6001600160401b03821115611f7957611f79611ef4565b50601f01601f191660200190565b5f8060408385031215611f98575f80fd5b8235611fa381611e3b565b915060208301356001600160401b03811115611fbd575f80fd5b8301601f81018513611fcd575f80fd5b8035611fe0611fdb82611f61565b611f31565b818152866020838501011115611ff4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f5b8381101561202d578181015183820152602001612015565b50505f910152565b5f815180845261204c816020860160208601612013565b601f01601f19169290920160200192915050565b602081525f6118056020830184612035565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156120c757603f198886030184526120b5858351612035565b94509285019290850190600101612099565b5092979650505050505050565b602080825282518282018190525f9190848201906040850190845b818110156121145783516001600160a01b0316835292840192918401916001016120ef565b50909695505050505050565b5f8060408385031215612131575f80fd5b823561213c81611e3b565b9150602083013561214c81611e3b565b809150509250929050565b803563ffffffff81168114611e5a575f80fd5b5f610140828403121561217b575f80fd5b612183611f08565b61218c83611e4f565b815261219a60208401612157565b60208201526121ab60408401612157565b60408201526121bc60608401611e4f565b60608201526121cd60808401611e4f565b60808201526121de60a08401611e4f565b60a08201526121ef60c08401611e4f565b60c082015260e083013560e0820152610100808401358183015250610120612218818501611e4f565b908201529392505050565b5f60208284031215612233575f80fd5b5035919050565b803561224581611e3b565b6001600160a01b0316825260208101356001600160401b03811680821461226a575f80fd5b80602085015250505050565b803561228181611e3b565b6001600160a01b03908116835260208201359061229d82611e3b565b90811660208401526040820135906122b482611e3b565b90811660408401526060820135906122cb82611e3b565b90811660608401526080820135906122e282611e3b565b808216608085015250505050565b5f6102808201905060018060a01b03808816835286356020840152602087013560408401526040870135606084015260608701356080840152608087013560a084015260a087013561234181611e3b565b1660c0830152843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a08501356101808301526123936101a083018561223a565b6123a16101e0830184612276565b9695505050505050565b5f602082840312156123bb575f80fd5b815161180581611e3b565b5f602082840312156123d6575f80fd5b81516001600160401b038111156123eb575f80fd5b8201601f810184136123fb575f80fd5b8051612409611fdb82611f61565b81815285602083850101111561241d575f80fd5b611d8e826020830160208601612013565b634e487b7160e01b5f52603260045260245ffd5b5f60c08284031215612452575f80fd5b60405160c081018181106001600160401b038211171561247457612474611ef4565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b8051611e5a81611e3b565b5f6101008083850312156124d6575f80fd5b604051908101906001600160401b03821181831017156124f8576124f8611ef4565b8160405283518152602084015160208201526040840151915061251a82611e3b565b81604082015261252c606085016124b9565b606082015261253d608085016124b9565b608082015261254e60a085016124b9565b60a082015261255f60c085016124b9565b60c082015261257060e085016124b9565b60e0820152949350505050565b66029b4bd32903e160cd1b81525f855161259e816007850160208a01612013565b8083019050620103e160ed1b80600783015286516125c381600a850160208b01612013565b600a920191820181905285516125e081600d850160208a01612013565b600d92019182015283516125fb816010840160208801612013565b016010019695505050505050565b6b0283934b1b2a332b2b2103e160a51b81525f835161262f81600c850160208801612013565b620103e160ed1b600c91840191820152835161265281600f840160208801612013565b01600f01949350505050565b81516001600160a01b0316815261014081016020830151612687602084018263ffffffff169052565b50604083015161269f604084018263ffffffff169052565b5060608301516126ba60608401826001600160a01b03169052565b5060808301516126d560808401826001600160a01b03169052565b5060a08301516126f060a08401826001600160a01b03169052565b5060c083015161270b60c08401826001600160a01b03169052565b5060e083810151908301526101008084015190830152610120928301516001600160a01b0316929091019190915290565b5f6020828403121561274c575f80fd5b5051919050565b818103818111156105ff57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8251612797818460208701612013565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220614535e62669586a66203dbb6b80f9c0b52c1966ea0f5c4bf4d1e06e8fa9838e64736f6c63430008170033", + "nonce": "0x92", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x15dca3a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb041ee0dc68034df62fc5319c2446042e4bfe57c9e1b6f4978304b77317a29d5", + "transactionIndex": "0x70", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x80fe5", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x41b733fe827a5cc663f795e0a0b2100aa7fa6d16", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaf41957757", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x920c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x174783c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xaea27d66fb9d54b58f437c4e8a95a27a5133135e2c38f9cd7f9e7d66fa5eb4dd", + "transactionIndex": "0x79", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x7bbe4", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xa78cc8d912", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x8ba0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18e2d77", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x23f718a23cd35e63767cb34051ce68ce953416cb480c11617d5e77be37e6f4a0", + "transactionIndex": "0x7c", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x5f9cf", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x41c3ce7663a7b06faacf8d62574999f3ca1d753a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x7fd19695c8", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x6a84" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x145f3f8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x80b22caa779b431094aa005a786b38215dcf73509122c6e16896ed54939a0628", + "transactionIndex": "0x6d", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0xe9544", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xba1b87a252dbb06e1bfa367898bbcf78e548f048", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x140f65ed450", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x10b78" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1821a03", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0baa50bd0a40d95390eddab25e8095c73df404285112e89064e80c3366177f7b", + "transactionIndex": "0x80", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x6d16a", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0b703e06170f72e1fea923a4e44fea2e3b406f8c", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x92c662f01e", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x7a50" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18cd295", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x356a343eec0b48c2eff03fbe7b7f03721f18fcd56aabb8524d6eaa38212b56b3", + "transactionIndex": "0x83", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x7de60", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xa079ad0c7c2620d368c68efcd57d286c1959c6ee", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaa66626176", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x8e00" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x194e4f6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcd853d0a9067ac6b82048294edd06e846d7fd8b1a6ba45dca874c8c8bc35cdb6", + "transactionIndex": "0x84", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x81261", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x2ffe1bf4e74f15cefe68f13e2a40a9fb041bef29", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaf71957635", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x9234" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1cef4ca", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6019f0f9990e3a49f596f9617c24ec080fda51a63c42d92431c050616c30aff1", + "transactionIndex": "0x86", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x3861cf", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe38a640174c8ff20a89a272967f960538be06b44", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x4d044afbbec", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x402e4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1d5f4c2", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x379781a1a43c5de33d825897efc44ccbca6ce33903d320c25f2cca5456dd633a", + "transactionIndex": "0x87", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x6fff8", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xfeb81e6c614fb7d53b2f9a1ef67459b55b3d84dc", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x96f99609f5", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x7dd0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1dc16f9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfc921f6ef492366e0696a8b5f91833fb0fd7314cbac241b34363b90902c74e0d", + "transactionIndex": "0x88", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x62237", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x870b4573f23ec6490247a500603238e7754d3ebe", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x8353301a36", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x6d70" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x202989a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x02ef53f7d37cd9356a4aa9ceed345c42d699021eed41e5e881e63c838d420bec", + "transactionIndex": "0x89", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x2681a1", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x5d4b12e547b462a16b2afd3ca821c77da986df97", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x3122fed74b8", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x28f28" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x22b927c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf7e45e9af14b76bdc31077268ca42dcfb95006a0aa83819477375bdc7176ce25", + "transactionIndex": "0x8a", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x28f9e2", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xdc8504a256093b3ea224415afed3c6f401eabba1", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x391931da6b5", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x2f950" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x246eaf8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbd0a71434e69bdf73528fe8df9c5f69a578ecd8e06f0ff746bef4c1a64970883", + "transactionIndex": "0x94", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x919f5", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x15f42baf389652cc0904f6fcc54b907a1147a7ab", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xc6732e84e3", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0xa560" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x25121a1", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5572ef8331b15a456c953389b549fbd225264babc091106b0afa303d27e37456", + "transactionIndex": "0x95", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0xa36a9", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x001e0b48886404dda139132cefb03891e37c4e55", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xdffcc78448", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0xbaa8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1656a85", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x40f17d48d71e960279cd6436dede17d2083de8744310833b5b2d6f1040adb43c", + "transactionIndex": "0x52", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0x51eb9", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0a7cc36c14f766a8561f95a0a5af90f0da46c49a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x713c395061", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5a7c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x172c3e7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x89dbd7fa8b92821b35970fbb0b249c202512926002a573f03dd127858cb408bc", + "transactionIndex": "0x53", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0xd5962", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xb5a851ebd5d501607af946d36496ebce3eb9b1d4", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x133582d3909", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0xf598" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18f01ca", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x83e24315e70dc2ea664bb2f10e6379f1eb51365e77e1aa74f61dfc7da9a0ddc2", + "transactionIndex": "0x58", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0xf0b12", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x44a956a465dddf7809b0d99a1b2aa90e4b019719", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x15bcd0bfd2a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x115ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1df4f05", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf43c1326c4f1d880ef37bfa1a8fe54d7b34ff0e5a08f6260d246a51515a6845b", + "transactionIndex": "0x67", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0x187620", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x42e124065d379e6cfc0c8554c73eae439ef8eb85", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x2395d0df855", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x1c6f8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x139066f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0c73848f4e0f798b1922d5c37b5217ebcfde388af726842c05de7d31a0f17f69", + "transactionIndex": "0x5a", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x90212", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x49d3e25408fc670db9a3e83ad3ae92c85235a957", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xcd64435b1d", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0xa420" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x15ed78f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0633b005c2b398d3c9f57e31267d8137c18fb2a9d62f92726463ef58dfcf9d7d", + "transactionIndex": "0x62", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x14a323", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x82b512fac9c21356bf5a050c710d4de7b7ff6eda", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x1e041e90c1a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x17fc4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1645b0d", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2a2eeeb3d0905c9c854e6bc108faae663f2e9f4de78adbed267c60a3089b198", + "transactionIndex": "0x63", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x5837e", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1658c459ee72984769438696c82e419c137484fe", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x7aa8fd3bc0", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x6204" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x17cfe34", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8b6a2a06bd0b1cf8feb40f9bab0e38fd83734d0dd19c31d2798ff837bb862f52", + "transactionIndex": "0x6b", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x52228", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x9f239921a3076cc9a0d24b28adebd52edd6895a2", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x71aa59a02b", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5ad4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1a0059f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd063cf4db0aff6e3b229118cd2cbd0d46d5d4708cae035586cfae447b47d8ab5", + "transactionIndex": "0x72", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x185e76", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x43d1c35eaff6779751cfcf6000c8d7c30dc4655a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x2374a72495a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x1c550" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x152e108", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x38211ee8646c4323b784f49474cf76db82c9c787c5eb5e2daefb0953b5c0646f", + "transactionIndex": "0x67", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "gasUsed": "0x4fa120", + "effectiveGasPrice": "0xfb4322", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xea61a6e3fe0c147a0989d4a526f5ccae940c7656", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x74a3d90db53", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5d348" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x175d81c", + "logs": [ + { + "address": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "blockTimestamp": "0x67615601", + "transactionHash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionIndex": "0x68", + "logIndex": "0xdb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002004000000000000000000000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionIndex": "0x68", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "gasUsed": "0x22f714", + "effectiveGasPrice": "0xfb4322", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": null, + "contractAddress": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x3324816ae11", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x28de0" + } + ], + "libraries": [ + "src/libraries/AccountingLibrary.sol:AccountingLibrary:0x001E0b48886404Dda139132CeFb03891E37c4E55", + "src/libraries/CapsLibrary.sol:CapsLibrary:0x41C3ce7663A7B06fAacF8d62574999F3cA1d753A", + "src/libraries/DepositTokenLibrary.sol:DepositTokenLibrary:0x0b703E06170f72E1fEA923a4e44fea2e3b406f8C", + "src/libraries/LoanLibrary.sol:LoanLibrary:0xFEB81e6c614fb7D53B2f9A1Ef67459b55B3d84dc", + "src/libraries/RiskLibrary.sol:RiskLibrary:0x15F42Baf389652cc0904f6FcC54B907A1147a7AB", + "src/libraries/YieldCurveLibrary.sol:YieldCurveLibrary:0xED1c89EF12f7B0dC2afA9e1a8bC89BE70fcD4C2d", + "src/libraries/actions/BuyCreditLimit.sol:BuyCreditLimit:0x41B733FE827a5cC663F795E0A0b2100aA7fa6D16", + "src/libraries/actions/BuyCreditMarket.sol:BuyCreditMarket:0x43D1C35eaFF6779751CFcf6000C8D7c30dc4655A", + "src/libraries/actions/Claim.sol:Claim:0x1658C459Ee72984769438696c82E419C137484FE", + "src/libraries/actions/Compensate.sol:Compensate:0x82B512FAc9c21356Bf5a050C710d4de7b7FF6eDa", + "src/libraries/actions/Deposit.sol:Deposit:0xA079Ad0c7c2620d368c68EfcD57D286C1959c6EE", + "src/libraries/actions/Initialize.sol:Initialize:0xe38A640174c8Ff20A89a272967f960538Be06b44", + "src/libraries/actions/Liquidate.sol:Liquidate:0xB5a851EbD5d501607af946D36496eBCE3Eb9b1d4", + "src/libraries/actions/LiquidateWithReplacement.sol:LiquidateWithReplacement:0x44A956A465dDdf7809B0d99A1B2Aa90e4B019719", + "src/libraries/actions/Repay.sol:Repay:0x9f239921A3076cc9a0d24B28AdeBD52Edd6895a2", + "src/libraries/actions/SelfLiquidate.sol:SelfLiquidate:0x49d3E25408FC670DB9A3E83AD3AE92c85235A957", + "src/libraries/actions/SellCreditLimit.sol:SellCreditLimit:0x2FFe1Bf4E74f15cEFE68f13E2a40A9Fb041Bef29", + "src/libraries/actions/SellCreditMarket.sol:SellCreditMarket:0x42E124065D379E6cFC0c8554C73EAe439eF8EB85", + "src/libraries/actions/SetUserConfiguration.sol:SetUserConfiguration:0x870B4573F23ec6490247a500603238e7754d3EbE", + "src/libraries/actions/UpdateConfig.sol:UpdateConfig:0xBa1b87A252DbB06e1bfa367898bBcf78e548F048", + "src/libraries/actions/Withdraw.sol:Withdraw:0x0a7cC36c14F766a8561f95A0a5aF90f0Da46c49A", + "src/v1.5/libraries/MarketFactoryLibrary.sol:MarketFactoryLibrary:0xEa61a6e3fE0c147A0989D4a526f5CcaE940c7656", + "src/v1.5/libraries/NonTransferrableScaledTokenV1_5FactoryLibrary.sol:NonTransferrableScaledTokenV1_5FactoryLibrary:0xdC8504a256093B3eA224415AfeD3c6f401eABba1", + "src/v1.5/libraries/PriceFeedFactoryLibrary.sol:PriceFeedFactoryLibrary:0x5D4B12e547B462A16B2aFd3CA821c77Da986Df97" + ], + "pending": [], + "returns": {}, + "timestamp": 1734432794, + "chain": 8453, + "commit": "0f0e166" +} \ No newline at end of file diff --git a/broadcast/UpgradeSizeFactory.s.sol/8453/run-latest.json b/broadcast/UpgradeSizeFactory.s.sol/8453/run-latest.json new file mode 100644 index 00000000..e9d2a97b --- /dev/null +++ b/broadcast/UpgradeSizeFactory.s.sol/8453/run-latest.json @@ -0,0 +1,1077 @@ +{ + "transactions": [ + { + "hash": "0xb041ee0dc68034df62fc5319c2446042e4bfe57c9e1b6f4978304b77317a29d5", + "transactionType": "CREATE2", + "contractName": "BuyCreditLimit", + "contractAddress": "0x41b733fe827a5cc663f795e0a0b2100aa7fa6d16", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xb22c0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061088f610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063339bb6311461004357806399e6337214610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104cd565b610077565b005b6100626100723660046104cd565b6101a3565b604080518082019091528135815260208082019061009790840184610517565b6100a090610632565b9052335f908152600e8401602090815260409091208251815582820151805180519293919260018501926100d8928492910190610470565b5060208281015180516100f19260018501920190610470565b506040820151805161010d916002840191602090910190610470565b5050833592507fc8871d6792330ffe03599518801289027505937d3a59e47d58e8138932305ecb915061014590506020840184610517565b61014f9080610712565b61015c6020860186610517565b61016a906020810190610712565b6101776020880188610517565b610185906040810190610712565b6040516101979695949392919061078f565b60405180910390a25050565b5f6040518060400160405280835f013581526020018380602001906101c89190610517565b6101d190610632565b905290506101de816101fc565b6101f757600a830154600b8401546101f791839161021b565b505050565b80515f9015801561021557506102158260200151610280565b92915050565b82515f0361023c576040516309bfa29360e01b815260040160405180910390fd5b610246824261080a565b8351101561027157825160405162225c9d60e01b815260048101919091526024015b60405180910390fd5b6101f7836020015183836102a6565b8051515f901580156102955750602082015151155b801561021557505060400151511590565b82515115806102b85750602083015151155b806102c65750604083015151155b156102e4576040516368a0e7c960e11b815260040160405180910390fd5b602083015151835151141580610301575060408301515183515114155b1561031f5760405163125b84af60e31b815260040160405180910390fd5b8251515f19905b80156103ab578451829061033b60018461081d565b8151811061034b5761034b610830565b60200260200101511061037157604051633b8e6a5760e21b815260040160405180910390fd5b845161037e60018361081d565b8151811061038e5761038e610830565b6020026020010151915080806103a390610844565b915050610326565b5082845f01515f815181106103c2576103c2610830565b6020026020010151101561041957835180515f906103e2576103e2610830565b6020026020010151838360405163a35ff9f160e01b8152600401610268939291909283526020830191909152604082015260600190565b8351805183919061042c9060019061081d565b8151811061043c5761043c610830565b6020026020010151111561046a578351805161045a9060019061081d565b815181106103e2576103e2610830565b50505050565b828054828255905f5260205f209081019282156104a9579160200282015b828111156104a957825182559160200191906001019061048e565b506104b59291506104b9565b5090565b5b808211156104b5575f81556001016104ba565b5f80604083850312156104de575f80fd5b82359150602083013567ffffffffffffffff8111156104fb575f80fd5b83016040818603121561050c575f80fd5b809150509250929050565b5f8235605e1983360301811261052b575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561056c5761056c610535565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561059b5761059b610535565b604052919050565b5f67ffffffffffffffff8211156105bc576105bc610535565b5060051b60200190565b5f82601f8301126105d5575f80fd5b813560206105ea6105e5836105a3565b610572565b8083825260208201915060208460051b87010193508684111561060b575f80fd5b602086015b848110156106275780358352918301918301610610565b509695505050505050565b5f60608236031215610642575f80fd5b61064a610549565b823567ffffffffffffffff80821115610661575f80fd5b61066d368387016105c6565b8352602091508185013581811115610683575f80fd5b850136601f820112610693575f80fd5b80356106a16105e5826105a3565b81815260059190911b820184019084810190368311156106bf575f80fd5b928501925b828410156106dd578335825292850192908501906106c4565b80868801525050505060408501359150808211156106f9575f80fd5b50610706368286016105c6565b60408301525092915050565b5f808335601e19843603018112610727575f80fd5b83018035915067ffffffffffffffff821115610741575f80fd5b6020019150600581901b3603821315610758575f80fd5b9250929050565b8183525f6001600160fb1b03831115610776575f80fd5b8260051b80836020870137939093016020019392505050565b606081525f6107a260608301888a61075f565b828103602084810191909152868252879181015f5b888110156107d3578335825292820192908201906001016107b7565b5084810360408601526107e781878961075f565b9b9a5050505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610215576102156107f6565b81810381811115610215576102156107f6565b634e487b7160e01b5f52603260045260245ffd5b5f81610852576108526107f6565b505f19019056fea26469706673582212209c52cd23c38c9564db50c2720a2763f93f6886f163118bdead8133888bfbf3cf64736f6c63430008170033", + "nonce": "0x7a", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xaea27d66fb9d54b58f437c4e8a95a27a5133135e2c38f9cd7f9e7d66fa5eb4dd", + "transactionType": "CREATE2", + "contractName": "YieldCurveLibrary", + "contractAddress": "0xed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xaaeb9", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061082c610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80632b8d122a14610038575b5f80fd5b61004b610046366004610642565b61005d565b60405190815260200160405180910390f35b825180515f9182826100715761007161075c565b60200260200101518310806100a95750845161008e600183610784565b8151811061009e5761009e61075c565b602002602001015183115b1561012b5782855f01515f815181106100c4576100c461075c565b6020026020010151865f01516001846100dd9190610784565b815181106100ed576100ed61075c565b602002602001015160405163a35ff9f160e01b8152600401610122939291909283526020830191909152604082015260600190565b60405180910390fd5b5f8061013a875f015186610283565b915091505f610184886020015184815181106101585761015861075c565b6020026020010151896040015185815181106101765761017661075c565b602002602001015189610380565b9050818314610271575f885f015184815181106101a3576101a361075c565b602002602001015190505f895f015184815181106101c3576101c361075c565b602002602001015190505f6102138b6020015186815181106101e7576101e761075c565b60200260200101518c6040015187815181106102055761020561075c565b60200260200101518c610380565b905083811061025a576102426102298583610784565b610233858c610784565b61023d8686610784565b610442565b61024c908561079d565b97505050505050505061027c565b6102676102298286610784565b61024c9085610784565b935061027c92505050565b9392505050565b81515f90819061029590600190610784565b90508382815181106102a9576102a961075c565b60200260200101518310806102d657508381815181106102cb576102cb61075c565b602002602001015183115b156102e657505f19905080610379565b808211610377575f60026102fa838561079d565b61030491906107b0565b9050838582815181106103195761031961075c565b602002602001015103610330579150819050610379565b838582815181106103435761034361075c565b602002602001015110156103635761035c81600161079d565b9250610371565b61036e600182610784565b91505b506102e6565b905b9250929050565b5f825f036103985761039184610456565b905061027c565b604082015167ffffffffffffffff1615806103d95750816040015167ffffffffffffffff16826020015167ffffffffffffffff16426103d79190610784565b115b15610409576020820151604051631ef81c5560e21b815267ffffffffffffffff9091166004820152602401610122565b61039161043361042e845f01516001600160801b031686670de0b6b3a7640000610442565b61047f565b61043d90866107cf565b610456565b5f61044e8484846104ab565b949350505050565b5f8082121561047b57604051635467221960e11b815260048101839052602401610122565b5090565b5f6001600160ff1b0382111561047b5760405163123baf0360e11b815260048101839052602401610122565b5f825f1904841183021582026104c85763ad251c275f526004601cfd5b5091020490565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610506576105066104cf565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610535576105356104cf565b604052919050565b5f67ffffffffffffffff821115610556576105566104cf565b5060051b60200190565b5f82601f83011261056f575f80fd5b8135602061058461057f8361053d565b61050c565b8083825260208201915060208460051b8701019350868411156105a5575f80fd5b602086015b848110156105c157803583529183019183016105aa565b509695505050505050565b803567ffffffffffffffff811681146105e3575f80fd5b919050565b5f606082840312156105f8575f80fd5b6106006104e3565b905081356001600160801b0381168114610618575f80fd5b8152610626602083016105cc565b6020820152610637604083016105cc565b604082015292915050565b5f805f60a08486031215610654575f80fd5b833567ffffffffffffffff8082111561066b575f80fd5b908501906060828803121561067e575f80fd5b6106866104e3565b823582811115610694575f80fd5b6106a089828601610560565b825250602080840135838111156106b5575f80fd5b8401601f81018a136106c5575f80fd5b80356106d361057f8261053d565b81815260059190911b8201830190838101908c8311156106f1575f80fd5b928401925b8284101561070f578335825292840192908401906106f6565b85850152505050604084013583811115610727575f80fd5b6107338a828701610560565b60408401525081965061074889828a016105e8565b955050505050608084013590509250925092565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561079757610797610770565b92915050565b8082018082111561079757610797610770565b5f826107ca57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018281125f8312801582168215821617156107ee576107ee610770565b50509291505056fea2646970667358221220152ab6d3891b100c538e482b769a2f0885f88d698ea0ada691c217210e61277364736f6c63430008170033", + "nonce": "0x7b", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x23f718a23cd35e63767cb34051ce68ce953416cb480c11617d5e77be37e6f4a0", + "transactionType": "CREATE2", + "contractName": "CapsLibrary", + "contractAddress": "0x41c3ce7663a7b06faacf8d62574999f3ca1d753a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x8410b", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610618610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80636ada66851461004e57806388d352e814610063578063bfbfe8ab14610076575b5f80fd5b61006161005c366004610336565b610089565b005b61006161007136600461034d565b61019f565b610061610084366004610384565b610214565b6009810154601a820154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156100d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fc91906103a4565b111561019c576009810154601a820154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610151573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017591906103a4565b604051630722b7fb60e21b8152600481019290925260248201526044015b60405180910390fd5b50565b600985015482111561020d575f8483116101b9575f6101c3565b6101c385846103bb565b90505f8285116101d3575f6101dd565b6101dd83866103bb565b90508082111561020a576040516321a5473d60e01b81526004810183905260248101829052604401610193565b50505b5050505050565b601982015460158301546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa158015610267573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028b91906104c1565b610100015160158401546040516370a0823160e01b81526001600160a01b0380841660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156102df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030391906103a4565b9050828110156103305760405163751babbf60e01b81526004810182905260248101849052604401610193565b50505050565b5f60208284031215610346575f80fd5b5035919050565b5f805f805f60a08688031215610361575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f8060408385031215610395575f80fd5b50508035926020909101359150565b5f602082840312156103b4575f80fd5b5051919050565b818103818111156103da57634e487b7160e01b5f52601160045260245ffd5b92915050565b6040516101e0810167ffffffffffffffff8111828210171561041057634e487b7160e01b5f52604160045260245ffd5b60405290565b5f60208284031215610426575f80fd5b6040516020810181811067ffffffffffffffff8211171561045557634e487b7160e01b5f52604160045260245ffd5b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610481575f80fd5b919050565b805164ffffffffff81168114610481575f80fd5b805161ffff81168114610481575f80fd5b80516001600160a01b0381168114610481575f80fd5b5f6101e082840312156104d2575f80fd5b6104da6103e0565b6104e48484610416565b81526104f260208401610462565b602082015261050360408401610462565b604082015261051460608401610462565b606082015261052560808401610462565b608082015261053660a08401610462565b60a082015261054760c08401610486565b60c082015261055860e0840161049a565b60e082015261010061056b8185016104ab565b9082015261012061057d8482016104ab565b9082015261014061058f8482016104ab565b908201526101606105a18482016104ab565b908201526101806105b3848201610462565b908201526101a06105c5848201610462565b908201526101c06105d7848201610462565b90820152939250505056fea26469706673582212205ee48f281d3fde1069338080fece9eb9a5ec373f4f498891f1a4b82bab6bf7f664736f6c63430008170033", + "nonce": "0x7c", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x80b22caa779b431094aa005a786b38215dcf73509122c6e16896ed54939a0628", + "transactionType": "CREATE2", + "contractName": "UpdateConfig", + "contractAddress": "0xba1b87a252dbb06e1bfa367898bbcf78e548f048", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x142492", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611046610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80634752b3b31461006457806386617e7714610085578063d72f4008146100f1578063dd378fd614610132578063e57980dd14610190575b5f80fd5b81801561006f575f80fd5b5061008361007e366004610eea565b6101a2565b005b610098610093366004610f34565b610b01565b6040516100e89190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201516001600160a01b03169181019190915260c00190565b60405180910390f35b6101046100ff366004610f34565b610b8d565b6040805182516001600160a01b0316815260209283015167ffffffffffffffff1692810192909252016100e8565b610145610140366004610f34565b610bda565b6040516100e891905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b61008361019e366004610eea565b5050565b6102096101af8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600981526863724f70656e696e6760b81b60208201529150610c579050565b1561021d5760208101356006830155610a6d565b61028861022a8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600d81526c31b92634b8bab4b230ba34b7b760991b60208201529150610c579050565b156102cf5760078201546020820135106102c057604051637224fdd560e11b8152602082013560048201526024015b60405180910390fd5b60208101356007830155610a6d565b61034a6102dc8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601981527f6d696e696d756d437265646974426f72726f7741546f6b656e0000000000000060208201529150610c579050565b1561035e5760208101356008830155610a6d565b6103cb61036b8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600f81526e0626f72726f7741546f6b656e43617608c1b60208201529150610c579050565b156103df5760208101356009830155610a6d565b6104456103ec8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600881526736b4b72a32b737b960c11b60208201529150610c579050565b156104cf5781541580159061047857508154610470906301e1338090670de0b6b3a764000090610c7d565b816020013510155b156104c057806020013561049e6301e13380670de0b6b3a7640000855f015f0154610c7d565b6040516309451ba560e11b8152600481019290925260248201526044016102b7565b6020810135600a830155610a6d565b6105356104dc8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600881526736b0bc2a32b737b960c11b60208201529150610c579050565b1561059d5781541580159061056857508154610560906301e1338090670de0b6b3a764000090610c7d565b816020013510155b1561058e57806020013561049e6301e13380670de0b6b3a7640000855f015f0154610c7d565b6020810135600b830155610a6d565b6106056105aa8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600a81526939bbb0b82332b2a0a82960b11b60208201529150610c579050565b1561066157610628670de0b6b3a76400006301e133808460060160050154610c7d565b81602001351061065557806020013561049e670de0b6b3a76400006301e133808560060160050154610c7d565b60208101358255610a6d565b6106cf61066e8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601081526f667261676d656e746174696f6e46656560801b60208201529150610c579050565b156106e35760208101356001830155610a6d565b61075e6106f08280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601881527f6c69717569646174696f6e52657761726450657263656e74000000000000000060208201529150610c579050565b156107725760208101356002830155610a6d565b6107ed61077f8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506040805180820190915260208082527f6f766572647565436f6c6c61746572616c50726f746f636f6c50657263656e74908201529150610c579050565b156108015760208101356003830155610a6d565b61087c61080e8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152601981527f636f6c6c61746572616c50726f746f636f6c50657263656e740000000000000060208201529150610c579050565b156108905760208101356004830155610a6d565b6108fa61089d8280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505060408051808201909152600c81526b199959549958da5c1a595b9d60a21b60208201529150610c579050565b15610925576005820180546001600160a01b03191660208301356001600160a01b0316179055610a6d565b61098c6109328280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506040805180820190915260098152681c1c9a58d95199595960ba1b60208201529150610c579050565b156109b757600c820180546001600160a01b03191660208301356001600160a01b0316179055610a6d565b610a176109c48280610f4b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516060810190915260278082529092509050610fea6020830139610c57565b15610a4857600d820180546001600160c01b0316600160c01b602084013567ffffffffffffffff1602179055610a6d565b610a528180610f4b565b60405163aa8df76960e01b81526004016102b7929190610f95565b610a7e610a7983610b01565b610c91565b610a8f610a8a83610bda565b610d29565b610aa0610a9b83610b8d565b610e3b565b610aaa8180610f4b565b604051610ab8929190610fc3565b60405180910390207f6818c9181f3a8cb0f4d8178667c423a4c4ed24fc2410822be08e76ef50b2de1e8260200135604051610af591815260200190565b60405180910390a25050565b610b3d6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b506040805160c081018252825481526001830154602082015260028301549181019190915260038201546060820152600482015460808201526005909101546001600160a01b031660a082015290565b604080518082019091525f80825260208201525060408051808201909152600c8201546001600160a01b03168152600d90910154600160c01b900467ffffffffffffffff16602082015290565b610c0d6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b506040805160c081018252600683015481526007830154602082015260088301549181019190915260098201546060820152600a8201546080820152600b9091015460a082015290565b5f81518351148015610c76575081805190602001208380519060200120145b9392505050565b5f610c89848484610ec6565b949350505050565b670de0b6b3a764000081606001511115610cc657806060015160405163fc4a516960e01b81526004016102b791815260200190565b670de0b6b3a764000081608001511115610cfb57806080015160405163fc4a516960e01b81526004016102b791815260200190565b60a08101516001600160a01b0316610d265760405163de0ce17d60e01b815260040160405180910390fd5b50565b8051670de0b6b3a76400001115610d59578051604051637224fdd560e11b815260048101919091526024016102b7565b670de0b6b3a764000081602001511015610d8e578060200151604051637224fdd560e11b81526004016102b791815260200190565b6020810151815111610dc357805160208201516040516334426b9b60e11b8152600481019290925260248201526044016102b7565b80604001515f03610de75760405163052f91cb60e51b815260040160405180910390fd5b80608001515f03610e0b5760405163052f91cb60e51b815260040160405180910390fd5b80608001518160a0015111610d26578060a00151604051632431f0f760e21b81526004016102b791815260200190565b80516001600160a01b0316610e635760405163de0ce17d60e01b815260040160405180910390fd5b805f01516001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e9190610fd2565b5f825f190484118302158202610ee35763ad251c275f526004601cfd5b5091020490565b5f8060408385031215610efb575f80fd5b82359150602083013567ffffffffffffffff811115610f18575f80fd5b830160408186031215610f29575f80fd5b809150509250929050565b5f60208284031215610f44575f80fd5b5035919050565b5f808335601e19843603018112610f60575f80fd5b83018035915067ffffffffffffffff821115610f7a575f80fd5b602001915036819003821315610f8e575f80fd5b9250929050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b818382375f9101908152919050565b5f60208284031215610fe2575f80fd5b505191905056fe7661726961626c65506f6f6c426f72726f77526174655374616c6552617465496e74657276616ca2646970667358221220546556f8a7ee54492eb52c76af3d0271d8d369a7747d3d70945cc986cb0bb5fe64736f6c63430008170033", + "nonce": "0x7d", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0baa50bd0a40d95390eddab25e8095c73df404285112e89064e80c3366177f7b", + "transactionType": "CREATE2", + "contractName": "DepositTokenLibrary", + "contractAddress": "0x0b703e06170f72e1fea923a4e44fea2e3b406f8c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9f8aa", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610717610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c80635fe31d8514610059578063785923ca1461007a5780637d3a9c2114610099578063c6504261146100b8575b5f80fd5b818015610064575f80fd5b50610078610073366004610655565b6100d7565b005b818015610085575f80fd5b50610078610094366004610655565b61015b565b8180156100a4575f80fd5b506100786100b3366004610655565b6101cd565b8180156100c3575f80fd5b506100786100d2366004610655565b610255565b60148401546001600160a01b03166100f1818530856102d3565b60168501546040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052909116906340c10f19906044015f604051808303815f87803b15801561013e575f80fd5b505af1158015610150573d5f803e3d5ffd5b505050505050505050565b601a840154604051636ce5768960e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063d9caed12906064015b5f604051808303815f87803b1580156101b1575f80fd5b505af11580156101c3573d5f803e3d5ffd5b5050505050505050565b60148401546016850154604051632770a7eb60e21b81526001600160a01b038681166004830152602482018590529283169290911690639dc29fac906044015f604051808303815f87803b158015610223575f80fd5b505af1158015610235573d5f803e3d5ffd5b5061024e925050506001600160a01b0382168484610340565b5050505050565b601584015461026f906001600160a01b03168430846102d3565b601a8401546015850154610290916001600160a01b03918216911683610376565b601a840154604051638340f54960e01b81526001600160a01b03858116600483015284811660248301526044820184905290911690638340f5499060640161019a565b6040516001600160a01b03848116602483015283811660448301526064820183905261033a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610401565b50505050565b6040516001600160a01b0383811660248301526044820183905261037191859182169063a9059cbb90606401610308565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526103c78482610467565b61033a576040516001600160a01b0384811660248301525f60448301526103fb91869182169063095ea7b390606401610308565b61033a84825b5f6104156001600160a01b03841683610508565b905080515f141580156104395750808060200190518101906104379190610696565b155b1561037157604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b5f805f846001600160a01b03168460405161048291906106b5565b5f604051808303815f865af19150503d805f81146104bb576040519150601f19603f3d011682016040523d82523d5f602084013e6104c0565b606091505b50915091508180156104ea5750805115806104ea5750808060200190518101906104ea9190610696565b80156104ff57505f856001600160a01b03163b115b95945050505050565b606061051583835f61051c565b9392505050565b6060814710156105415760405163cd78605960e01b815230600482015260240161045e565b5f80856001600160a01b0316848660405161055c91906106b5565b5f6040518083038185875af1925050503d805f8114610596576040519150601f19603f3d011682016040523d82523d5f602084013e61059b565b606091505b50915091506105ab8683836105b5565b9695505050505050565b6060826105ca576105c582610611565b610515565b81511580156105e157506001600160a01b0384163b155b1561060a57604051639996b31560e01b81526001600160a01b038516600482015260240161045e565b5080610515565b8051156106215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610650575f80fd5b919050565b5f805f8060808587031215610668575f80fd5b843593506106786020860161063a565b92506106866040860161063a565b9396929550929360600135925050565b5f602082840312156106a6575f80fd5b81518015158114610515575f80fd5b5f82515f5b818110156106d457602081860181015185830152016106ba565b505f92019182525091905056fea2646970667358221220c3455c256fff90572aa24cd6381131dbeacbe60fb5630ed0e097b6874c6c035c64736f6c63430008170033", + "nonce": "0x7e", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x356a343eec0b48c2eff03fbe7b7f03721f18fcd56aabb8524d6eaa38212b56b3", + "transactionType": "CREATE2", + "contractName": "Deposit", + "contractAddress": "0xa079ad0c7c2620d368c68efcd57d286c1959c6ee", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xade5b", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610855610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063804612351461004357806387e2411514610058575b5f80fd5b610056610051366004610779565b610077565b005b818015610063575f80fd5b50610056610072366004610779565b6101c6565b34158015906100b657508060200135341415806100b6575060138201546001600160a01b03166100aa60208301836107ae565b6001600160a01b031614155b156100db57604051635e531d5360e11b81523460048201526024015b60405180910390fd5b60148201546001600160a01b03166100f660208301836107ae565b6001600160a01b03161415801561012f575060158201546001600160a01b031661012360208301836107ae565b6001600160a01b031614155b156101665761014160208201826107ae565b60405163276b4fc160e01b81526001600160a01b0390911660048201526024016100d2565b80602001355f0361018a5760405163052f91cb60e51b815260040160405180910390fd5b5f61019b60608301604084016107ae565b6001600160a01b0316036101c25760405163de0ce17d60e01b815260040160405180910390fd5b5050565b336020820135341561024f5750601383015460408051630d0e30db60e41b8152905147926001600160a01b03169163d0e30db09184916004808201925f9290919082900301818588803b15801561021b575f80fd5b505af115801561022d573d5f803e3d5ffd5b50505050601385015461024b91506001600160a01b03163083610487565b3091505b60158401546001600160a01b031661026a60208501856107ae565b6001600160a01b03160361038457730b703e06170f72e1fea923a4e44fea2e3b406f8c63c650426185846102a460608801604089016107ae565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b1580156102f6575f80fd5b505af4158015610308573d5f803e3d5ffd5b505050506019840154600160a01b900460ff1661037f57604051636ada668560e01b8152600481018590527341c3ce7663a7b06faacf8d62574999f3ca1d753a90636ada6685906024015f6040518083038186803b158015610368575f80fd5b505af415801561037a573d5f803e3d5ffd5b505050505b610419565b730b703e06170f72e1fea923a4e44fea2e3b406f8c635fe31d8585846103b060608801604089016107ae565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610402575f80fd5b505af4158015610414573d5f803e3d5ffd5b505050505b61042960608401604085016107ae565b6001600160a01b031661043f60208501856107ae565b6001600160a01b03167f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f628360405161047991815260200190565b60405180910390a350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526104d88482610540565b61053a57604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526105309085906105e1565b61053a84826105e1565b50505050565b5f805f846001600160a01b03168460405161055b91906107d4565b5f604051808303815f865af19150503d805f8114610594576040519150601f19603f3d011682016040523d82523d5f602084013e610599565b606091505b50915091508180156105c35750805115806105c35750808060200190518101906105c39190610800565b80156105d857505f856001600160a01b03163b115b95945050505050565b5f6105f56001600160a01b03841683610647565b905080515f141580156106195750808060200190518101906106179190610800565b155b1561064257604051635274afe760e01b81526001600160a01b03841660048201526024016100d2565b505050565b606061065483835f61065b565b9392505050565b6060814710156106805760405163cd78605960e01b81523060048201526024016100d2565b5f80856001600160a01b0316848660405161069b91906107d4565b5f6040518083038185875af1925050503d805f81146106d5576040519150601f19603f3d011682016040523d82523d5f602084013e6106da565b606091505b50915091506106ea8683836106f4565b9695505050505050565b6060826107095761070482610750565b610654565b815115801561072057506001600160a01b0384163b155b1561074957604051639996b31560e01b81526001600160a01b03851660048201526024016100d2565b5080610654565b8051156107605780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f80828403608081121561078b575f80fd5b833592506060601f19820112156107a0575f80fd5b506020830190509250929050565b5f602082840312156107be575f80fd5b81356001600160a01b0381168114610654575f80fd5b5f82515f5b818110156107f357602081860181015185830152016107d9565b505f920191825250919050565b5f60208284031215610810575f80fd5b81518015158114610654575f80fdfea264697066735822122050b234d9180e6e7fa39de57c1f5895311a5240e1c3b37b00ba1e4f4d07009d8c64736f6c63430008170033", + "nonce": "0x7f", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcd853d0a9067ac6b82048294edd06e846d7fd8b1a6ba45dca874c8c8bc35cdb6", + "transactionType": "CREATE2", + "contractName": "SellCreditLimit", + "contractAddress": "0x2ffe1bf4e74f15cefe68f13e2a40a9fb041bef29", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbce14", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610892610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806313e316321461004357806329de607914610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104d0565b610077565b005b6100626100723660046104d0565b6101a6565b60408051808201909152813581526020808201906100979084018461051a565b6100a090610635565b9052335f908152600e840160209081526040909120825160048201908155838301518051805192949193600501926100db9284920190610473565b5060208281015180516100f49260018501920190610473565b5060408201518051610110916002840191602090910190610473565b5050833592507fbd9051c5eec86a3d4cd9dfb36219ffe08c560f2bef817d86833a5716d7e00cc991506101489050602084018461051a565b6101529080610715565b61015f602086018661051a565b61016d906020810190610715565b61017a602088018861051a565b610188906040810190610715565b60405161019a96959493929190610792565b60405180910390a25050565b5f6040518060400160405280835f013581526020018380602001906101cb919061051a565b6101d490610635565b905290506101e1816101ff565b6101fa57600a830154600b8401546101fa91839161021e565b505050565b80515f9015801561021857506102188260200151610283565b92915050565b82515f0361023f576040516309bfa29360e01b815260040160405180910390fd5b610249824261080d565b8351101561027457825160405162225c9d60e01b815260048101919091526024015b60405180910390fd5b6101fa836020015183836102a9565b8051515f901580156102985750602082015151155b801561021857505060400151511590565b82515115806102bb5750602083015151155b806102c95750604083015151155b156102e7576040516368a0e7c960e11b815260040160405180910390fd5b602083015151835151141580610304575060408301515183515114155b156103225760405163125b84af60e31b815260040160405180910390fd5b8251515f19905b80156103ae578451829061033e600184610820565b8151811061034e5761034e610833565b60200260200101511061037457604051633b8e6a5760e21b815260040160405180910390fd5b8451610381600183610820565b8151811061039157610391610833565b6020026020010151915080806103a690610847565b915050610329565b5082845f01515f815181106103c5576103c5610833565b6020026020010151101561041c57835180515f906103e5576103e5610833565b6020026020010151838360405163a35ff9f160e01b815260040161026b939291909283526020830191909152604082015260600190565b8351805183919061042f90600190610820565b8151811061043f5761043f610833565b6020026020010151111561046d578351805161045d90600190610820565b815181106103e5576103e5610833565b50505050565b828054828255905f5260205f209081019282156104ac579160200282015b828111156104ac578251825591602001919060010190610491565b506104b89291506104bc565b5090565b5b808211156104b8575f81556001016104bd565b5f80604083850312156104e1575f80fd5b82359150602083013567ffffffffffffffff8111156104fe575f80fd5b83016040818603121561050f575f80fd5b809150509250929050565b5f8235605e1983360301811261052e575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561056f5761056f610538565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561059e5761059e610538565b604052919050565b5f67ffffffffffffffff8211156105bf576105bf610538565b5060051b60200190565b5f82601f8301126105d8575f80fd5b813560206105ed6105e8836105a6565b610575565b8083825260208201915060208460051b87010193508684111561060e575f80fd5b602086015b8481101561062a5780358352918301918301610613565b509695505050505050565b5f60608236031215610645575f80fd5b61064d61054c565b823567ffffffffffffffff80821115610664575f80fd5b610670368387016105c9565b8352602091508185013581811115610686575f80fd5b850136601f820112610696575f80fd5b80356106a46105e8826105a6565b81815260059190911b820184019084810190368311156106c2575f80fd5b928501925b828410156106e0578335825292850192908501906106c7565b80868801525050505060408501359150808211156106fc575f80fd5b50610709368286016105c9565b60408301525092915050565b5f808335601e1984360301811261072a575f80fd5b83018035915067ffffffffffffffff821115610744575f80fd5b6020019150600581901b360382131561075b575f80fd5b9250929050565b8183525f6001600160fb1b03831115610779575f80fd5b8260051b80836020870137939093016020019392505050565b606081525f6107a560608301888a610762565b828103602084810191909152868252879181015f5b888110156107d6578335825292820192908201906001016107ba565b5084810360408601526107ea818789610762565b9b9a5050505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610218576102186107f9565b81810381811115610218576102186107f9565b634e487b7160e01b5f52603260045260245ffd5b5f81610855576108556107f9565b505f19019056fea26469706673582212203fd8a50891b1af7c9b57d7b49e4cc53433e70a5af141005d1825f5a635dfc32464736f6c63430008170033", + "nonce": "0x80", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6019f0f9990e3a49f596f9617c24ec080fda51a63c42d92431c050616c30aff1", + "transactionType": "CREATE2", + "contractName": "Initialize", + "contractAddress": "0xe38a640174c8ff20a89a272967f960538be06b44", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x4de0b1", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006141ce610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106200005a575f3560e01c80633664147f146200005e57806369777eb91462000084578063bff6b1c4146200009b578063d5630f9a14620000bf575b5f80fd5b8180156200006a575f80fd5b50620000826200007c36600462001c04565b620000d6565b005b620000826200009536600462001ecf565b62000be6565b818015620000a7575f80fd5b5062000082620000b936600462001f4d565b62000c25565b62000082620000d036600462001c04565b62000e13565b601a840180546001600160a01b0319166001600160a01b038581169182179092556017860154604080516318160ddd60e01b8152905191909316925f9184916318160ddd9160048083019260209291908290030181865afa1580156200013e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000164919062001fb7565b90505f836001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ca919062001fb7565b90505f836001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000230919062001fb7565b90505f5b868110156200071d575f856001600160a01b0316631da24f3e8a8a8581811062000262576200026262001fcf565b905060200201602081019062000279919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620002bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e2919062001fb7565b90505f876001600160a01b0316631da24f3e8b8b8681811062000309576200030962001fcf565b905060200201602081019062000320919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801562000363573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000389919062001fb7565b9050876001600160a01b031663366554d98b8b86818110620003af57620003af62001fcf565b9050602002016020810190620003c6919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b1580156200040c575f80fd5b505af11580156200041f573d5f803e3d5ffd5b50505050876001600160a01b0316631da24f3e8b8b8681811062000447576200044762001fcf565b90506020020160208101906200045e919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620004a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c7919062001fb7565b1562000599575f886001600160a01b0316631da24f3e8c8c87818110620004f257620004f262001fcf565b905060200201602081019062000509919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156200054c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000572919062001fb7565b604051631946864960e01b8152600481019290925260248201526044015b60405180910390fd5b866001600160a01b031663bb620c8d8b8b86818110620005bd57620005bd62001fcf565b9050602002016020810190620005d4919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b1580156200061a575f80fd5b505af11580156200062d573d5f803e3d5ffd5b505050505f82886001600160a01b0316631da24f3e8d8d8881811062000657576200065762001fcf565b90506020020160208101906200066e919062001fe3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015620006b1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006d7919062001fb7565b620006e3919062002001565b90508181146200071157604051631c52854b60e01b8152600481018390526024810182905260440162000590565b50505060010162000234565b505f846001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000782919062001fb7565b60198b015460158c01546040516335ea6a7560e01b81526001600160a01b0391821660048201529293505f929116906335ea6a75906024016101e060405180830381865afa158015620007d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007fd9190620020be565b610100015190505f876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000842573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000868919062001fb7565b1115620008ef57866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620008d2919062001fb7565b60405163bb552d7b60e01b81526004016200059091815260200190565b83620008fc848462002001565b146200092d57604051631d2e872d60e11b815260048101839052602481018490526044810185905260640162000590565b604051630ed1279f60e11b81523060048201526001600160a01b03821690631da24f3e90602401602060405180830381865afa15801562000970573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000996919062001fb7565b620009a2848462002001565b111562000a4157604051630ed1279f60e11b8152306004820152829084906001600160a01b03841690631da24f3e90602401602060405180830381865afa158015620009f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a16919062001fb7565b604051638a46530960e01b815260048101939093526024830191909152604482015260640162000590565b6040516370a0823160e01b815230600482015262000ac39087906001600160a01b038416906370a0823190602401602060405180830381865afa15801562000a8b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ab1919062001fb7565b6001600160a01b038416919062000e7f565b896001600160a01b03167fab961858fe69778e71d26f9f69007e56ff2c7ec7144512555f6b650266cdb3a28686896001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b2d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000b53919062001fb7565b8a6001600160a01b031663b1bf962d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b90573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000bb6919062001fb7565b60408051948552602085019390935291830152606082015260800160405180910390a25050505050505050505050565b62000bf18562000ed8565b62000bfc8462000f03565b62000c078362000f9d565b62000c1282620010b9565b62000c1d816200114c565b505050505050565b835185556020840151600186015560408401516002860155606084015160038601556080840151600486015560a08401516005860180546001600160a01b0319166001600160a01b03909216919091179055825160068601556020830151600786015560408301516008860155606083015160098601556080830151600a86015560a0830151600b8601558151600c860180546001600160a01b0319166001600160a01b039092169190911790556020820151600d860180546001600160c01b0316600160c01b67ffffffffffffffff9093169290920291909117905562000d0e8582620013d3565b6040805185518152602080870151818301528683015182840152606080880151818401526080808901518185015260a0808a01516001600160a01b0390811682870152895160c08701528985015160e087015289870151610100870152898401516101208701528983015161014087015290890151610160860152875181166101808601528784015167ffffffffffffffff166101a0860152865181166101c08601529286015183166101e08501528585015183166102008501529085015182166102208401528401511661024082015290517fe780f0c31cb8a54bfde29d2834b0194e2d0e087651a1c3b2ed820abc8a015789918190036102600190a15050505050565b601a8401546001600160a01b03161562000e5157601a840154604051629624cf60e61b81526001600160a01b03909116600482015260240162000590565b6001600160a01b03831662000e795760405163de0ce17d60e01b815260040160405180910390fd5b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905262000ed390849062001a22565b505050565b6001600160a01b03811662000f005760405163de0ce17d60e01b815260040160405180910390fd5b50565b670de0b6b3a76400008160600151111562000f3a57806060015160405163fc4a516960e01b81526004016200059091815260200190565b670de0b6b3a76400008160800151111562000f7157806080015160405163fc4a516960e01b81526004016200059091815260200190565b60a08101516001600160a01b031662000f005760405163de0ce17d60e01b815260040160405180910390fd5b8051670de0b6b3a7640000111562000fcf578051604051637224fdd560e11b8152600481019190915260240162000590565b670de0b6b3a76400008160200151101562001006578060200151604051637224fdd560e11b81526004016200059091815260200190565b60208101518151116200103d57805160208201516040516334426b9b60e11b81526004810192909252602482015260440162000590565b80604001515f03620010625760405163052f91cb60e51b815260040160405180910390fd5b80608001515f03620010875760405163052f91cb60e51b815260040160405180910390fd5b80608001518160a001511162000f00578060a00151604051632431f0f760e21b81526004016200059091815260200190565b80516001600160a01b0316620010e25760405163de0ce17d60e01b815260040160405180910390fd5b805f01516001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001122573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001148919062001fb7565b5050565b80516001600160a01b0316620011755760405163de0ce17d60e01b815260040160405180910390fd5b60208101516001600160a01b0316620011a15760405163de0ce17d60e01b815260040160405180910390fd5b601281602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200120a919062002200565b60ff1611156200129b5780602001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001255573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200127b919062002200565b60405163b094f61d60e01b815260ff909116600482015260240162000590565b60408101516001600160a01b0316620012c75760405163de0ce17d60e01b815260040160405180910390fd5b601281604001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200130a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001330919062002200565b60ff1611156200137b5780604001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001255573d5f803e3d5ffd5b60608101516001600160a01b0316620013a75760405163de0ce17d60e01b815260040160405180910390fd5b60808101516001600160a01b031662000f005760405163de0ce17d60e01b815260040160405180910390fd5b5f6011830155620013e760025f1962002222565b601283015580516013830180546001600160a01b03199081166001600160a01b03938416179091556020830151601485018054831691841691821790556040808501516015870180548516918616919091179055606085015160198701805490941694169390931790915581516306fdde0360e01b8152915130926306fdde03916004808301925f9291908290030181865afa1580156200148a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620014b3919081019062002266565b604051602001620014c591906200231a565b60408051601f1981840301815282825260148601546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa1580156200151c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001545919081019062002266565b60405160200162001557919062002348565b60408051601f19818403018152828252601487015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa158015620015af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620015d5919062002200565b604051620015e39062001bd3565b620015f29493929190620023a0565b604051809103905ff0801580156200160c573d5f803e3d5ffd5b506016830180546001600160a01b0319166001600160a01b0392831617905560198301546015840154604080516306fdde0360e01b81529051928416939190911691309183916306fdde03916004808201925f929091908290030181865afa1580156200167b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620016a4919081019062002266565b604051602001620016b69190620023ee565b60408051601f1981840301815282825260158801546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa1580156200170d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001736919081019062002266565b60405160200162001748919062002423565b60408051601f19818403018152828252601589015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa158015620017a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620017c6919062002200565b604051620017d49062001be1565b620017e5969594939291906200244f565b604051809103905ff080158015620017ff573d5f803e3d5ffd5b506017830180546001600160a01b0319166001600160a01b039283161790556015830154604080516306fdde0360e01b81529051309392909216916306fdde03916004808201925f929091908290030181865afa15801562001863573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200188c919081019062002266565b6040516020016200189e9190620024af565b60408051601f1981840301815282825260158601546395d89b4160e01b8452915190926001600160a01b03909216916395d89b41916004808301925f9291908290030181865afa158015620018f5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200191e919081019062002266565b604051602001620019309190620024e2565b60408051601f19818403018152828252601587015463313ce56760e01b8452915190926001600160a01b039092169163313ce5679160048083019260209291908290030181865afa15801562001988573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019ae919062002200565b604051620019bc9062001bd3565b620019cb9493929190620023a0565b604051809103905ff080158015620019e5573d5f803e3d5ffd5b506018830180546001600160a01b03199081166001600160a01b039384161790915560809290920151601a90930180549092169216919091179055565b5f62001a386001600160a01b0384168362001a8a565b905080515f1415801562001a5f57508080602001905181019062001a5d919062002511565b155b1562000ed357604051635274afe760e01b81526001600160a01b038416600482015260240162000590565b606062001a9983835f62001aa2565b90505b92915050565b60608147101562001ac95760405163cd78605960e01b815230600482015260240162000590565b5f80856001600160a01b0316848660405162001ae6919062002532565b5f6040518083038185875af1925050503d805f811462001b22576040519150601f19603f3d011682016040523d82523d5f602084013e62001b27565b606091505b509150915062001b3986838362001b45565b925050505b9392505050565b60608262001b5e5762001b588262001ba9565b62001b3e565b815115801562001b7657506001600160a01b0384163b155b1562001ba157604051639996b31560e01b81526001600160a01b038516600482015260240162000590565b508062001b3e565b80511562001bba5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b610bae806200255083390190565b61109b80620030fe83390190565b6001600160a01b038116811462000f00575f80fd5b5f805f806060858703121562001c18575f80fd5b84359350602085013562001c2c8162001bef565b9250604085013567ffffffffffffffff8082111562001c49575f80fd5b818701915087601f83011262001c5d575f80fd5b81358181111562001c6c575f80fd5b8860208260051b850101111562001c81575f80fd5b95989497505060200194505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171562001cca5762001cca62001c90565b60405290565b6040516101e0810167ffffffffffffffff8111828210171562001cca5762001cca62001c90565b5f60c0828403121562001d08575f80fd5b62001d1262001ca4565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013562001d508162001bef565b60a082015292915050565b5f60c0828403121562001d6c575f80fd5b62001d7662001ca4565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b5f6040828403121562001dc5575f80fd5b6040516040810167ffffffffffffffff828210818311171562001dec5762001dec62001c90565b816040528293508435915062001e028262001bef565b908252602084013590808216821462001e19575f80fd5b506020919091015292915050565b5f60a0828403121562001e38575f80fd5b60405160a0810181811067ffffffffffffffff8211171562001e5e5762001e5e62001c90565b604052905080823562001e718162001bef565b8152602083013562001e838162001bef565b6020820152604083013562001e988162001bef565b6040820152606083013562001ead8162001bef565b6060820152608083013562001ec28162001bef565b6080919091015292915050565b5f805f805f806102a0878903121562001ee6575f80fd5b86359550602087013562001efa8162001bef565b945062001f0b886040890162001cf7565b935062001f1d88610100890162001d5b565b925062001f2f886101c0890162001db4565b915062001f4188610200890162001e27565b90509295509295509295565b5f805f805f610280868803121562001f63575f80fd5b8535945062001f76876020880162001cf7565b935062001f878760e0880162001d5b565b925062001f99876101a0880162001db4565b915062001fab876101e0880162001e27565b90509295509295909350565b5f6020828403121562001fc8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562001ff4575f80fd5b813562001b3e8162001bef565b8181038181111562001a9c57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121562002032575f80fd5b6040516020810181811067ffffffffffffffff8211171562002058576200205862001c90565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811462002085575f80fd5b919050565b805164ffffffffff8116811462002085575f80fd5b805161ffff8116811462002085575f80fd5b8051620020858162001bef565b5f6101e08284031215620020d0575f80fd5b620020da62001cd0565b620020e6848462002021565b8152620020f66020840162002065565b6020820152620021096040840162002065565b60408201526200211c6060840162002065565b60608201526200212f6080840162002065565b60808201526200214260a0840162002065565b60a08201526200215560c084016200208a565b60c08201526200216860e084016200209f565b60e08201526101006200217d818501620020b1565b9082015261012062002191848201620020b1565b90820152610140620021a5848201620020b1565b90820152610160620021b9848201620020b1565b90820152610180620021cd84820162002065565b908201526101a0620021e184820162002065565b908201526101c0620021f584820162002065565b908201529392505050565b5f6020828403121562002211575f80fd5b815160ff8116811462001b3e575f80fd5b5f826200223d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5b838110156200225e57818101518382015260200162002244565b50505f910152565b5f6020828403121562002277575f80fd5b815167ffffffffffffffff808211156200228f575f80fd5b818401915084601f830112620022a3575f80fd5b815181811115620022b857620022b862001c90565b604051601f8201601f19908116603f01168101908382118183101715620022e357620022e362001c90565b81604052828152876020848701011115620022fc575f80fd5b6200230f83602083016020880162002242565b979650505050505050565b64029b4bd32960dd1b81525f82516200233b81600585016020870162002242565b9190910160050192915050565b6139bd60f11b81525f82516200236681600285016020870162002242565b9190910160020192915050565b5f81518084526200238c81602086016020860162002242565b601f01601f19169290920160200192915050565b6001600160a01b03851681526080602082018190525f90620023c59083018662002373565b8281036040840152620023d9818662002373565b91505060ff8316606083015295945050505050565b6b029b4bd329029b1b0b632b2160a51b81525f82516200241681600c85016020870162002242565b91909101600c0192915050565b62737a6160e81b81525f82516200244281600385016020870162002242565b9190910160030192915050565b6001600160a01b03878116825286811660208301528516604082015260c0606082018190525f90620024849083018662002373565b828103608084015262002498818662002373565b91505060ff831660a0830152979650505050505050565b69029b4bd32902232b13a160b51b81525f8251620024d581600a85016020870162002242565b91909101600a0192915050565b651cde9119589d60d21b81525f82516200250481600685016020870162002242565b9190910160060192915050565b5f6020828403121562002522575f80fd5b8151801515811462001b3e575f80fd5b5f82516200254581846020870162002242565b919091019291505056fe60a060405234801562000010575f80fd5b5060405162000bae38038062000bae8339810160408190526200003391620001d4565b8282856001600160a01b0381166200006457604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006f81620000c4565b5060046200007e8382620002fb565b5060056200008d8282620002fb565b5050508060ff165f03620000b45760405163052f91cb60e51b815260040160405180910390fd5b60ff1660805250620003c7915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000137575f80fd5b81516001600160401b038082111562000154576200015462000113565b604051601f8301601f19908116603f011681019082821181831017156200017f576200017f62000113565b81604052838152602092508660208588010111156200019c575f80fd5b5f91505b83821015620001bf5785820183015181830184015290820190620001a0565b5f602085830101528094505050505092915050565b5f805f8060808587031215620001e8575f80fd5b84516001600160a01b0381168114620001ff575f80fd5b60208601519094506001600160401b03808211156200021c575f80fd5b6200022a8883890162000127565b9450604087015191508082111562000240575f80fd5b506200024f8782880162000127565b925050606085015160ff8116811462000266575f80fd5b939692955090935050565b600181811c908216806200028657607f821691505b602082108103620002a557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002f657805f5260205f20601f840160051c81016020851015620002d25750805b601f840160051c820191505b81811015620002f3575f8155600101620002de565b50505b505050565b81516001600160401b0381111562000317576200031762000113565b6200032f8162000328845462000271565b84620002ab565b602080601f83116001811462000365575f84156200034d5750858301515b5f19600386901b1c1916600185901b178555620003bf565b5f85815260208120601f198616915b82811015620003955788860151825594840194600190910190840162000374565b5085821015620003b357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6080516107ce620003e05f395f61015601526107ce5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063715018a6116100885780639dc29fac116100635780639dc29fac146101e7578063a9059cbb146101fa578063dd62ed3e1461020d578063f2fde38b14610220575f80fd5b8063715018a6146101bd5780638da5cb5b146101c557806395d89b41146101df575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f57806340c10f191461018057806370a0823114610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610233565b6040516100fe919061062f565b60405180910390f35b61011a610115366004610696565b6102c3565b60405190151581526020016100fe565b6003545b6040519081526020016100fe565b61011a61014a3660046106be565b6102dd565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61019361018e366004610696565b6102fb565b005b61012e6101a33660046106f7565b6001600160a01b03165f9081526001602052604090205490565b610193610311565b5f546040516001600160a01b0390911681526020016100fe565b6100f1610324565b6101936101f5366004610696565b610333565b61011a610208366004610696565b610345565b61012e61021b366004610710565b610362565b61019361022e3660046106f7565b610386565b60606004805461024290610741565b80601f016020809104026020016040519081016040528092919081815260200182805461026e90610741565b80156102b95780601f10610290576101008083540402835291602001916102b9565b820191905f5260205f20905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f6102e66103c8565b6102f18484846103f4565b5060019392505050565b6103036103c8565b61030d8282610456565b5050565b6103196103c8565b6103225f61048a565b565b60606005805461024290610741565b61033b6103c8565b61030d82826104d9565b5f61034e6103c8565b6103593384846102dd565b90505b92915050565b5f80546001600160a01b0383811691161461037d575f610359565b505f1992915050565b61038e6103c8565b6001600160a01b0381166103bc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6103c58161048a565b50565b5f546001600160a01b031633146103225760405163118cdaa760e01b81523360048201526024016103b3565b6001600160a01b03831661041d57604051634b637e8f60e11b81525f60048201526024016103b3565b6001600160a01b0382166104465760405163ec442f0560e01b81525f60048201526024016103b3565b610451838383610509565b505050565b6001600160a01b03821661047f5760405163ec442f0560e01b81525f60048201526024016103b3565b61030d5f8383610509565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661050257604051634b637e8f60e11b81525f60048201526024016103b3565b61030d825f835b6001600160a01b038316610533578060035f8282546105289190610779565b909155506105a39050565b6001600160a01b0383165f90815260016020526040902054818110156105855760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103b3565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b0382166105bf576003805482900390556105dd565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062291815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b8181101561065b5785810183015185820160400152820161063f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610691575f80fd5b919050565b5f80604083850312156106a7575f80fd5b6106b08361067b565b946020939093013593505050565b5f805f606084860312156106d0575f80fd5b6106d98461067b565b92506106e76020850161067b565b9150604084013590509250925092565b5f60208284031215610707575f80fd5b6103598261067b565b5f8060408385031215610721575f80fd5b61072a8361067b565b91506107386020840161067b565b90509250929050565b600181811c9082168061075557607f821691505b60208210810361077357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561035c57634e487b7160e01b5f52601160045260245ffdfea26469706673582212205120924966e94599f3094db62f3561fe9cc5562a278fc59e00fa81a3bfb1c85764736f6c6343000817003360e060405234801562000010575f80fd5b506040516200109b3803806200109b833981016040819052620000339162000216565b836001600160a01b0381166200006257604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200006d81620000ee565b506001600160a01b03861615806200008c57506001600160a01b038516155b15620000ab5760405163de0ce17d60e01b815260040160405180910390fd5b6001600160a01b03808716608052851660a0526001620000cc84826200035e565b506002620000db83826200035e565b5060ff1660c052506200042a9350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811462000152575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000179575f80fd5b81516001600160401b038082111562000196576200019662000155565b604051601f8301601f19908116603f01168101908282118183101715620001c157620001c162000155565b8160405283815260209250866020858801011115620001de575f80fd5b5f91505b83821015620002015785820183015181830184015290820190620001e2565b5f602085830101528094505050505092915050565b5f805f805f8060c087890312156200022c575f80fd5b865162000239816200013d565b60208801519096506200024c816200013d565b60408801519095506200025f816200013d565b60608801519094506001600160401b03808211156200027c575f80fd5b6200028a8a838b0162000169565b94506080890151915080821115620002a0575f80fd5b50620002af89828a0162000169565b92505060a087015160ff81168114620002c6575f80fd5b809150509295509295509295565b600181811c90821680620002e957607f821691505b6020821081036200030857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200035957805f5260205f20601f840160051c81016020851015620003355750805b601f840160051c820191505b8181101562000356575f815560010162000341565b50505b505050565b81516001600160401b038111156200037a576200037a62000155565b62000392816200038b8454620002d4565b846200030e565b602080601f831160018114620003c8575f8415620003b05750858301515b5f19600386901b1c1916600185901b17855562000422565b5f85815260208120601f198616915b82811015620003f857888601518255948401946001909101908401620003d7565b50858210156200041657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a05160c051610c46620004555f395f6101a101525f6108ad01525f6108d70152610c465ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063b1bf962d1161006e578063b1bf962d1461023a578063bb620c8d14610242578063bbf44f3314610255578063dd62ed3e1461025d578063f2fde38b14610270575f80fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b411461021f578063a9059cbb14610227575f80fd5b806323b872dd116100d957806323b872dd14610189578063313ce5671461019c578063366554d9146101d557806370a08231146101ea575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b5780631da24f3e14610161575b5f80fd5b610112610283565b60405161011f9190610a75565b60405180910390f35b61013b610136366004610adc565b61030f565b604051901515815260200161011f565b610153610329565b60405190815260200161011f565b61015361016f366004610b04565b6001600160a01b03165f9081526004602052604090205490565b61013b610197366004610b1d565b610340565b6101c37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161011f565b6101e86101e3366004610adc565b610568565b005b6101536101f8366004610b04565b6106fb565b6101e8610722565b5f546040516001600160a01b03909116815260200161011f565b610112610735565b61013b610235366004610adc565b610742565b600354610153565b6101e8610250366004610adc565b61075d565b610153610896565b61015361026b366004610b56565b610942565b6101e861027e366004610b04565b610966565b6001805461029090610b87565b80601f01602080910402602001604051908101604052809291908181526020018280546102bc90610b87565b80156103075780601f106102de57610100808354040283529160200191610307565b820191905f5260205f20905b8154815290600101906020018083116102ea57829003601f168201915b505050505081565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f61033b61033660035490565b6109a3565b905090565b5f6103496109c2565b6001600160a01b03841661037757604051634b637e8f60e11b81525f60048201526024015b60405180910390fd5b6001600160a01b0383166103a05760405163ec442f0560e01b81525f600482015260240161036e565b5f6103bf836b033b2e3c9fd0803ce80000006103ba610896565b6109ee565b6001600160a01b0386165f9081526004602052604090205490915081111561041c57846103eb866106fb565b60405163391434e360e21b81526001600160a01b03909216600483015260248201526044810184905260640161036e565b6001600160a01b0385165f9081526004602052604081208054839290610443908490610bd3565b90915550506001600160a01b0384165f908152600460205260408120805483929061046f908490610be6565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104bb91815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba8560405161050891815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee38360405161055591815260200190565b60405180910390a3506001949350505050565b6105706109c2565b6001600160a01b03821661059957604051634b637e8f60e11b81525f600482015260240161036e565b5f6105a3826109a3565b6001600160a01b0384165f9081526004602052604090205490915082111561060057826105cf846106fb565b60405163391434e360e21b81526001600160a01b03909216600483015260248201526044810182905260640161036e565b6001600160a01b0383165f9081526004602052604081208054849290610627908490610bd3565b90915550506003805483900390556040518181525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040518181525f906001600160a01b038516907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281525f906001600160a01b038516907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020015b60405180910390a3505050565b6001600160a01b0381165f9081526004602052604081205461071c906109a3565b92915050565b61072a6109c2565b6107335f610a02565b565b6002805461029090610b87565b5f61074b6109c2565b610756338484610340565b9392505050565b6107656109c2565b6001600160a01b03821661078e5760405163ec442f0560e01b81525f600482015260240161036e565b8060035f82825461079f9190610be6565b90915550506001600160a01b0382165f9081526004602052604081208054830190556107ca826109a3565b9050826001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161081191815260200190565b60405180910390a36040518181526001600160a01b038416905f907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281526001600160a01b038416905f907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020016106ee565b60405163d15e005360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d15e005390602401602060405180830381865afa15801561091e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033b9190610bf9565b5f80546001600160a01b0383811691161461095d575f610756565b505f1992915050565b61096e6109c2565b6001600160a01b03811661099757604051631e4fbdf760e01b81525f600482015260240161036e565b6109a081610a02565b50565b5f61071c826109b0610896565b6b033b2e3c9fd0803ce80000006109ee565b5f546001600160a01b031633146107335760405163118cdaa760e01b815233600482015260240161036e565b5f6109fa848484610a51565b949350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f825f190484118302158202610a6e5763ad251c275f526004601cfd5b5091020490565b5f602080835283518060208501525f5b81811015610aa157858101830151858201604001528201610a85565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ad7575f80fd5b919050565b5f8060408385031215610aed575f80fd5b610af683610ac1565b946020939093013593505050565b5f60208284031215610b14575f80fd5b61075682610ac1565b5f805f60608486031215610b2f575f80fd5b610b3884610ac1565b9250610b4660208501610ac1565b9150604084013590509250925092565b5f8060408385031215610b67575f80fd5b610b7083610ac1565b9150610b7e60208401610ac1565b90509250929050565b600181811c90821680610b9b57607f821691505b602082108103610bb957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561071c5761071c610bbf565b8082018082111561071c5761071c610bbf565b5f60208284031215610c09575f80fd5b505191905056fea26469706673582212201500243b44948fca3a1d90b525c575dbecb5a06a617f12c5c3e2d204a4e75bcb64736f6c63430008170033a26469706673582212202d39befa30007df884d60b525b01477cb4b9cc7d0b46987ea3398744bcac3fcf64736f6c63430008170033", + "nonce": "0x81", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x379781a1a43c5de33d825897efc44ccbca6ce33903d320c25f2cca5456dd633a", + "transactionType": "CREATE2", + "contractName": "LoanLibrary", + "contractAddress": "0xfeb81e6c614fb7d53b2f9a1ef67459b55b3d84dc", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x9ab27", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061074e610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006b575f3560e01c80632a349f701461006f5780633978289f1461009557806345ffd36d146100a85780637d62a7e0146100bb5780639930537e146100db578063e6541090146100ee575b5f80fd5b61008261007d3660046105c1565b610101565b6040519081526020015b60405180910390f35b6100826100a3366004610635565b610227565b6100826100b6366004610655565b61026d565b6100ce6100c9366004610635565b61037d565b60405161008c91906106bc565b6100826100e9366004610635565b610478565b6100826100fc366004610635565b6104b7565b5f80610111848460600151610478565b601885015481546040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa158015610161573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018591906106e2565b601686015483546040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa1580156101d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f991906106e2565b9050811561021a576102108186604001518461051b565b9350505050610221565b5f93505050505b92915050565b5f6102328383610527565b1561024c57505f8181526010830160205260409020610221565b6040516310cc79db60e21b8152600481018390526024015b60405180910390fd5b601882015481516040516370a0823160e01b81526001600160a01b0391821660048201525f92839216906370a0823190602401602060405180830381865afa1580156102bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102df91906106e2565b601685015484516040516370a0823160e01b81526001600160a01b0391821660048201529293505f929116906370a0823190602401602060405180830381865afa15801561032f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035391906106e2565b905081156103735761036a8185602001518461051b565b92505050610221565b5f92505050610221565b5f818152600f830160209081526040808320815160808101835281546001600160a01b031681526001820154938101939093526002810154918301919091526003015460608201526103cf8484610527565b1561041d576103de84846104b7565b6040805160808101825282546001600160a01b031681526001830154602082015260028301549181019190915260039091015460608201529050610444565b601184015483106104445760405163088e88a760e21b815260048101849052602401610264565b80602001515f03610459576002915050610221565b806040015142111561046f576001915050610221565b5f915050610221565b60118201545f9082101561049b57505f818152600f830160205260409020610221565b60405163037a107f60e01b815260048101839052602401610264565b5f806104c38484610227565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff161515602082015260018301549181019190915260029091015460608201819052909150610513908590610478565b949350505050565b5f61051384848461054d565b5f61053460025f196106f9565b82101580156105465750601283015482105b9392505050565b5f825f19048411830215820261056a5763ad251c275f526004601cfd5b5091020490565b6040516080810167ffffffffffffffff811182821017156105a057634e487b7160e01b5f52604160045260245ffd5b60405290565b80356001600160a01b03811681146105bc575f80fd5b919050565b5f8082840360a08112156105d3575f80fd5b833592506080601f19820112156105e8575f80fd5b506105f1610571565b6105fd602085016105a6565b815260408401358015158114610611575f80fd5b60208201526060848101356040830152608090940135938101939093525092909150565b5f8060408385031215610646575f80fd5b50508035926020909101359150565b5f8082840360a0811215610667575f80fd5b833592506080601f198201121561067c575f80fd5b50610685610571565b610691602085016105a6565b8152604084013560208201526060840135604082015260808401356060820152809150509250929050565b60208101600383106106dc57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f602082840312156106f2575f80fd5b5051919050565b5f8261071357634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220225984e0ef73b7e1c7a3bf0797b12e184d2889b0cba117cf87bb39273511ed4a64736f6c63430008170033", + "nonce": "0x82", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xfc921f6ef492366e0696a8b5f91833fb0fd7314cbac241b34363b90902c74e0d", + "transactionType": "CREATE2", + "contractName": "SetUserConfiguration", + "contractAddress": "0x870b4573f23ec6490247a500603238e7754d3ebe", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x878db", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610648610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063603ed05b14610043578063a9fa1f2814610058575b5f80fd5b6100566100513660046104c1565b610077565b005b818015610063575f80fd5b506100566100723660046104c1565b61029a565b5f5b610086606083018361050b565b9050811015610295575f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc633978289f856100b8606087018761050b565b868181106100c8576100c8610558565b905060200201356040518363ffffffff1660e01b81526004016100f5929190918252602082015260400190565b602060405180830381865af4158015610110573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610134919061056c565b80549091506001600160a01b0316331461019157610155606084018461050b565b8381811061016557610165610558565b905060200201356040516310cc79db60e21b815260040161018891815260200190565b60405180910390fd5b5f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc637d62a7e0866101ba606088018861050b565b878181106101ca576101ca610558565b905060200201356040518363ffffffff1660e01b81526004016101f7929190918252602082015260400190565b602060405180830381865af4158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610597565b600281111561024757610247610583565b1461028c57610259606084018461050b565b8381811061026957610269610558565b9050602002013560405163225e181360e01b815260040161018891815260200190565b50600101610079565b505050565b335f908152600e8301602090815260409182902083356008820155916102c5919084019084016105bc565b60098201805460ff19169115159190911790555f5b6102e7606084018461050b565b9050811015610451575f73feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc633978289f86610319606088018861050b565b8681811061032957610329610558565b905060200201356040518363ffffffff1660e01b8152600401610356929190918252602082015260400190565b602060405180830381865af4158015610371573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610395919061056c565b90506103a760608501604086016105bc565b8154901515600160a01b0260ff60a01b198216811783556001600160a01b039081169116176103d9606086018661050b565b848181106103e9576103e9610558565b905060200201357f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf268360010154845f0160149054906101000a900460ff166040516104409291909182521515602082015260400190565b60405180910390a3506001016102da565b5061046260608301604084016105bc565b151561047460408401602085016105bc565b151583357f58b25bc3bfa6575cee096feac88aa4f7431042706e375790630012de2bf81dfe6104a6606087018761050b565b6040516104b49291906105db565b60405180910390a4505050565b5f80604083850312156104d2575f80fd5b82359150602083013567ffffffffffffffff8111156104ef575f80fd5b830160808186031215610500575f80fd5b809150509250929050565b5f808335601e19843603018112610520575f80fd5b83018035915067ffffffffffffffff82111561053a575f80fd5b6020019150600581901b3603821315610551575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561057c575f80fd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156105a7575f80fd5b8151600381106105b5575f80fd5b9392505050565b5f602082840312156105cc575f80fd5b813580151581146105b5575f80fd5b602080825281018290525f6001600160fb1b038311156105f9575f80fd5b8260051b8085604085013791909101604001939250505056fea2646970667358221220e0644d16576bc139b00006b187b6996dca5e3a4e319ac04f7cf5d94194d87c3a64736f6c63430008170033", + "nonce": "0x83", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x02ef53f7d37cd9356a4aa9ceed345c42d699021eed41e5e881e63c838d420bec", + "transactionType": "CREATE2", + "contractName": "PriceFeedFactoryLibrary", + "contractAddress": "0x5d4b12e547b462a16b2afd3ca821c77da986df97", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3850c8", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000612cdc610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c806328b6d97214610038575b5f80fd5b818015610043575f80fd5b5061005761005236600461011c565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f81604051610081906100ab565b61008b91906101d5565b604051809103905ff0801580156100a4573d5f803e3d5ffd5b5092915050565b6129f3806102b483390190565b604051610140810167ffffffffffffffff811182821017156100e857634e487b7160e01b5f52604160045260245ffd5b60405290565b80356001600160a01b0381168114610104575f80fd5b919050565b803563ffffffff81168114610104575f80fd5b5f610140828403121561012d575f80fd5b6101356100b8565b61013e836100ee565b815261014c60208401610109565b602082015261015d60408401610109565b604082015261016e606084016100ee565b606082015261017f608084016100ee565b608082015261019060a084016100ee565b60a08201526101a160c084016100ee565b60c082015260e083013560e08201526101008084013581830152506101206101ca8185016100ee565b908201529392505050565b81516001600160a01b03168152610140810160208301516101fe602084018263ffffffff169052565b506040830151610216604084018263ffffffff169052565b50606083015161023160608401826001600160a01b03169052565b50608083015161024c60808401826001600160a01b03169052565b5060a083015161026760a08401826001600160a01b03169052565b5060c083015161028260c08401826001600160a01b03169052565b5060e083810151908301526101008084015190830152610120928301516001600160a01b031692909101919091529056fe60e060405234801561000f575f80fd5b506040516129f33803806129f383398101604081905261002e91610205565b8061012001516040516100409061017b565b6001600160a01b039091168152602001604051809103905ff080158015610069573d5f803e3d5ffd5b506001600160a01b031660805260a081015160c082015160e08301516101008401516040516012949392919061009e90610188565b9485526001600160a01b0393841660208601529290911660408401526060830152608082015260a001604051809103905ff0801580156100e0573d5f803e3d5ffd5b506001600160a01b031660a05260608101516080820151825160208401516040808601519051601295949392919061011790610195565b9586526001600160a01b03948516602087015292841660408601529216606084015263ffffffff91821660808401521660a082015260c001604051809103905ff080158015610168573d5f803e3d5ffd5b506001600160a01b031660c052506102be565b6102ed8061080483390190565b610a7580610af183390190565b61148d8061156683390190565b60405161014081016001600160401b03811182821017156101d157634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160a01b03811681146101ed575f80fd5b919050565b805163ffffffff811681146101ed575f80fd5b5f6101408284031215610216575f80fd5b61021e6101a2565b610227836101d7565b8152610235602084016101f2565b6020820152610246604084016101f2565b6040820152610257606084016101d7565b6060820152610268608084016101d7565b608082015261027960a084016101d7565b60a082015261028a60c084016101d7565b60c082015260e083015160e08201526101008084015181830152506101206102b38185016101d7565b908201529392505050565b60805160a05160c0516104ec6103185f395f818160dc015261035901525f818161014201528181610167015281816101ed015281816102db015281816103bb015261041801525f8181610113015261026e01526104ec5ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c806398d5fdca1161006357806398d5fdca146100fe578063999b93af14610106578063a6601cf21461010e578063ce52a6b414610135578063d8a2b7f01461013d575f80fd5b80630b08424914610094578063313ce567146100af5780635001f3b5146100b757806395679855146100d7575b5f80fd5b61009c610164565b6040519081526020015b60405180910390f35b61009c601281565b6100bf6101ea565b6040516001600160a01b0390911681526020016100a6565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b61009c61026b565b6100bf6103b8565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b61009c610415565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630b0842496040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e59190610472565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9692bd26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610247573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e59190610489565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ec73052b6040518163ffffffff1660e01b81526004015f6040518083038186803b1580156102c3575f80fd5b505afa1580156102d5573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610353575060408051601f3d908101601f1916820190925261035091810190610472565b60015b6103b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166351f482df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610247573d5f803e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ce52a6b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c1573d5f803e3d5ffd5b5f60208284031215610482575f80fd5b5051919050565b5f60208284031215610499575f80fd5b81516001600160a01b03811681146104af575f80fd5b939250505056fea264697066735822122021206a6792f6a36105867f601c05e49b16482df45188cac0be6b10123043cde564736f6c6343000817003360a060405234801561000f575f80fd5b506040516102ed3803806102ed83398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b60805161025e61008f5f395f8181603d015281816087015260b8015261025e5ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063a726470514610038578063ec73052b1461007b575b5f80fd5b61005f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610083610085565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610197575f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610112573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013691906101b7565b50509250925050805f148061014b5750816001145b1561016957604051634a3b18b560e01b815260040160405180910390fd5b610e106101768242610203565b1161019457604051631e71412560e01b815260040160405180910390fd5b50505b565b805169ffffffffffffffffffff811681146101b2575f80fd5b919050565b5f805f805f60a086880312156101cb575f80fd5b6101d486610199565b94506020860151935060408601519250606086015191506101f760808701610199565b90509295509295909350565b8181038181111561022257634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220ce11f27f71fede47ebcc8f053580b792985e67a8b7425106231a5d1b7f6169b064736f6c634300081700336101206040526012608052348015610015575f80fd5b50604051610a75380380610a7583398101604081905261003491610279565b6001600160a01b038416158061005157506001600160a01b038316155b1561006f5760405163de0ce17d60e01b815260040160405180910390fd5b81158061007a575080155b15610098576040516373f9226b60e11b815260040160405180910390fd5b60808590526001600160a01b0380851660a052831660c081905260e08390526101008290526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156100f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011a91906102c4565b60ff1660a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017f91906102c4565b60ff161461020d5760c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e991906102c4565b60405163b094f61d60e01b815260ff90911660048201526024015b60405180910390fd5b60c0516001600160a01b031660a0516001600160a01b031603610254578082146102545760405163b2dd8c5960e01b81526004810183905260248101829052604401610204565b50505050506102eb565b80516001600160a01b0381168114610274575f80fd5b919050565b5f805f805f60a0868803121561028d575f80fd5b8551945061029d6020870161025e565b93506102ab6040870161025e565b6060870151608090970151959894975095949392505050565b5f602082840312156102d4575f80fd5b815160ff811681146102e4575f80fd5b9392505050565b60805160a05160c05160e051610100516107036103725f395f8181610138015261036b01525f818160690152818161029001526102f601525f818160ca0152818161015d015261034a01525f818161011101528181610187015281816101b60152818161026f01526102d501525f818160a301528181610244015261031f01526107035ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80630b08424914610064578063313ce5671461009e57806351f482df146100c557806398d5fdca14610104578063b9692bd21461010c578063ce52a6b414610133575b5f80fd5b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b6100ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610095565b61008b61015a565b6100ec7f000000000000000000000000000000000000000000000000000000000000000081565b61008b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036102cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610210573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023491906104e6565b61023f90600a610601565b61026a7f0000000000000000000000000000000000000000000000000000000000000000600a61060f565b6102b47f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b6102be919061061a565b6102c89190610631565b905090565b6102c861031a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b6103457f0000000000000000000000000000000000000000000000000000000000000000600a61060f565b61038f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610394565b610485565b5f805f846001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156103d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f7919061066e565b509350509250505f821361043557604051633e8ca01160e21b81526001600160a01b0386166004820152602481018390526044015b60405180910390fd5b8361044082426106ba565b111561047157604051632c4f4f3160e21b81526001600160a01b03861660048201526024810182905260440161042c565b61047a82610499565b925050505b92915050565b5f6104918484846104c2565b949350505050565b5f808212156104be57604051635467221960e11b81526004810183905260240161042c565b5090565b5f825f1904841183021582026104df5763ad251c275f526004601cfd5b5091020490565b5f602082840312156104f6575f80fd5b815160ff81168114610506575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561055b57815f19048211156105415761054161050d565b8085161561054e57918102915b93841c9390800290610526565b509250929050565b5f826105715750600161047f565b8161057d57505f61047f565b8160018114610593576002811461059d576105b9565b600191505061047f565b60ff8411156105ae576105ae61050d565b50506001821b61047f565b5060208310610133831016604e8410600b84101617156105dc575081810a61047f565b6105e68383610521565b805f19048211156105f9576105f961050d565b029392505050565b5f61050660ff841683610563565b5f6105068383610563565b808202811582820484141761047f5761047f61050d565b5f8261064b57634e487b7160e01b5f52601260045260245ffd5b500490565b805169ffffffffffffffffffff81168114610669575f80fd5b919050565b5f805f805f60a08688031215610682575f80fd5b61068b86610650565b94506020860151935060408601519250606086015191506106ae60808701610650565b90509295509295909350565b8181038181111561047f5761047f61050d56fea26469706673582212200e37a22716937023f4575e9c024000dd1abcae02418479387bc997479964f8dc64736f6c6343000817003361014060405234801562000011575f80fd5b506040516200148d3803806200148d8339810160408190526200003491620002e8565b6001600160a01b03851615806200005257506001600160a01b038416155b806200006557506001600160a01b038316155b15620000845760405163de0ce17d60e01b815260040160405180910390fd5b836001600160a01b0316856001600160a01b031603620000c75760405163276b4fc160e01b81526001600160a01b03851660048201526024015b60405180910390fd5b8163ffffffff165f03620000ee57604051631202386d60e21b815260040160405180910390fd5b8063ffffffff165f036200011557604051633afaae6560e11b815260040160405180910390fd5b60808690526001600160a01b0380861660a05284811660c052831660e081815263ffffffff8085166101005283166101205260408051633850c7bd60e01b815290515f9392633850c7bd92600480820193918290030181865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a5919062000376565b50505093505050505f620001e3620001d08563ffffffff168563ffffffff166200026360201b60201c565b620001dd9060016200041e565b62000283565b90508061ffff168261ffff161015620002555760e0516040516332148f6760e01b815261ffff831660048201526001600160a01b03909116906332148f67906024015f604051808303815f87803b1580156200023d575f80fd5b505af115801562000250573d5f803e3d5ffd5b505050505b505050505050505062000444565b5f8162000277576365244e4e5f526004601cfd5b50808206151591040190565b5f61ffff821115620002b3576040516306dfcc6560e41b81526010600482015260248101839052604401620000be565b5090565b6001600160a01b0381168114620002cc575f80fd5b50565b805163ffffffff81168114620002e3575f80fd5b919050565b5f805f805f8060c08789031215620002fe575f80fd5b8651955060208701516200031281620002b7565b60408801519095506200032581620002b7565b60608801519094506200033881620002b7565b92506200034860808801620002cf565b91506200035860a08801620002cf565b90509295509295509295565b805161ffff81168114620002e3575f80fd5b5f805f805f805f60e0888a0312156200038d575f80fd5b87516200039a81620002b7565b8097505060208801518060020b8114620003b2575f80fd5b9550620003c26040890162000364565b9450620003d26060890162000364565b9350620003e26080890162000364565b925060a088015160ff81168114620003f8575f80fd5b60c089015190925080151581146200040e575f80fd5b8091505092959891949750929550565b808201808211156200043e57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e0516101005161012051610fd2620004bb5f395f60c701525f818161013801526101d801525f818161018e01526101b701525f81816083015281816102be01526102e601525f818161016701528181610205015261029d01525f818161010301526103740152610fd25ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638107e133116100585780638107e1331461013357806398d5fdca1461015a578063c55dae6314610162578063f55ebd2a14610189575f80fd5b8063217a4b701461007e578063233dedf1146100c2578063313ce567146100fe575b5f80fd5b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b9565b6101257f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100b9565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6101256101b0565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b6100a57f000000000000000000000000000000000000000000000000000000000000000081565b5f806101fc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103b6565b5090505f6102937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102839190610afd565b61028e90600a610c13565b6105f5565b90505f6102e283837f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061062c565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103649190610afd565b61036f90600a610c13565b61039a7f0000000000000000000000000000000000000000000000000000000000000000600a610c21565b6103a49083610c2c565b6103ae9190610c57565b935050505090565b5f808263ffffffff165f036103f75760405162461bcd60e51b8152602060048201526002602482015261042560f41b60448201526064015b60405180910390fd5b6040805160028082526060820183525f9260208301908036833701905050905083815f8151811061042a5761042a610c7e565b602002602001019063ffffffff16908163ffffffff16815250505f8160018151811061045857610458610c7e565b602002602001019063ffffffff16908163ffffffff16815250505f80866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016104a09190610c92565b5f60405180830381865afa1580156104ba573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104e19190810190610daf565b915091505f825f815181106104f8576104f8610c7e565b60200260200101518360018151811061051357610513610c7e565b60200260200101516105259190610e73565b90505f825f8151811061053a5761053a610c7e565b60200260200101518360018151811061055557610555610c7e565b60200260200101516105679190610ea0565b905061057963ffffffff891683610ec7565b96505f8260060b12801561059e575061059863ffffffff891683610f03565b60060b15155b156105b157866105ad81610f24565b9750505b5f6105c96001600160a01b0363ffffffff8b16610f45565b90506105e6640100000000600160c01b03602084901b1682610f77565b96505050505050509250929050565b5f6001600160801b03821115610628576040516306dfcc6560e41b815260806004820152602481018390526044016103ee565b5090565b5f8061063786610737565b90506001600160801b036001600160a01b038216116106bc575f6106646001600160a01b03831680610c2c565b9050836001600160a01b0316856001600160a01b03161061069c57610697600160c01b876001600160801b031683610a52565b6106b4565b6106b481876001600160801b0316600160c01b610a52565b92505061072e565b5f6106da6001600160a01b0383168068010000000000000000610a52565b9050836001600160a01b0316856001600160a01b0316106107125761070d600160801b876001600160801b031683610a52565b61072a565b61072a81876001600160801b0316600160801b610a52565b9250505b50949350505050565b5f805f8360020b1261074c578260020b610753565b8260020b5f035b9050620d89e8811115610779576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f0361078e57600160801b6107a0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156107d4576ffff97272373d413259a46990580e213a0260801c5b60048216156107f3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610812576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610831576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610850576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561086f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561088e576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156108ae576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156108ce576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156108ee576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561090e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561092e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561094e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561096e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561098e576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156109af576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156109cf576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156109ee576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610a0b576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315610a2a57805f1981610a2657610a26610c43565b0490505b640100000000810615610a3e576001610a40565b5f5b60ff16602082901c0192505050919050565b5f80805f19858709858702925082811083820303915050805f03610a86575f8411610a7b575f80fd5b508290049050610af6565b808411610a91575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b5f60208284031215610b0d575f80fd5b815160ff81168114610af6575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610b6b57815f1904821115610b5157610b51610b1d565b80851615610b5e57918102915b93841c9390800290610b36565b509250929050565b5f82610b8157506001610c0d565b81610b8d57505f610c0d565b8160018114610ba35760028114610bad57610bc9565b6001915050610c0d565b60ff841115610bbe57610bbe610b1d565b50506001821b610c0d565b5060208310610133831016604e8410600b8410161715610bec575081810a610c0d565b610bf68383610b31565b805f1904821115610c0957610c09610b1d565b0290505b92915050565b5f610af660ff841683610b73565b5f610af68383610b73565b8082028115828204841417610c0d57610c0d610b1d565b634e487b7160e01b5f52601260045260245ffd5b5f82610c6557610c65610c43565b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f9190848201906040850190845b81811015610ccf57835163ffffffff1683529284019291840191600101610cad565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d0457610d04610c6a565b604052919050565b5f67ffffffffffffffff821115610d2557610d25610c6a565b5060051b60200190565b5f82601f830112610d3e575f80fd5b81516020610d53610d4e83610d0c565b610cdb565b8083825260208201915060208460051b870101935086841115610d74575f80fd5b602086015b84811015610da45780516001600160a01b0381168114610d97575f80fd5b8352918301918301610d79565b509695505050505050565b5f8060408385031215610dc0575f80fd5b825167ffffffffffffffff80821115610dd7575f80fd5b818501915085601f830112610dea575f80fd5b81516020610dfa610d4e83610d0c565b82815260059290921b84018101918181019089841115610e18575f80fd5b948201945b83861015610e445785518060060b8114610e35575f80fd5b82529482019490820190610e1d565b91880151919650909350505080821115610e5c575f80fd5b50610e6985828601610d2f565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610c0d57610c0d610b1d565b6001600160a01b03828116828216039080821115610ec057610ec0610b1d565b5092915050565b5f8160060b8360060b80610edd57610edd610c43565b667fffffffffffff1982145f1982141615610efa57610efa610b1d565b90059392505050565b5f8260060b80610f1557610f15610c43565b808360060b0791505092915050565b5f8160020b627fffff198103610f3c57610f3c610b1d565b5f190192915050565b6001600160c01b03828116828216818102831692918115828504821417610f6e57610f6e610b1d565b50505092915050565b5f6001600160c01b0383811680610f9057610f90610c43565b9216919091049291505056fea2646970667358221220115ee402a8564b5c9e83f4a5b9a3e910a0432f5334f174021d626dee8bf1adec64736f6c63430008170033a264697066735822122023f36d2582b175a3a99b471415141cf488487ee6b4866613930bcbdb4552242064736f6c63430008170033", + "nonce": "0x84", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf7e45e9af14b76bdc31077268ca42dcfb95006a0aa83819477375bdc7176ce25", + "transactionType": "CREATE2", + "contractName": "NonTransferrableScaledTokenV1_5FactoryLibrary", + "contractAddress": "0xdc8504a256093b3ea224415afed3c6f401eabba1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x3bed73", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000612f7b610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80634299eb2d14610038575b5f80fd5b818015610043575f80fd5b506100576100523660046102aa565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f60405161008090610277565b604051809103905ff080158015610099573d5f803e3d5ffd5b5030848487866001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156100d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101009190810190610328565b60405160200161011091906103d0565b604051602081830303815290604052876001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561015a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101819190810190610328565b6040516020016101919190610414565b604051602081830303815290604052886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610200919061043d565b604051602401610216979695949392919061048f565b60408051601f198184030181529181526020820180516001600160e01b0316631f0cbe6160e01b1790525161024a90610285565b6102559291906104f4565b604051809103905ff08015801561026e573d5f803e3d5ffd5b50949350505050565b612636806200052083390190565b6103f08062002b5683390190565b6001600160a01b03811681146102a7575f80fd5b50565b5f805f606084860312156102bc575f80fd5b83356102c781610293565b925060208401356102d781610293565b915060408401356102e781610293565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015610320578181015183820152602001610308565b50505f910152565b5f60208284031215610338575f80fd5b815167ffffffffffffffff8082111561034f575f80fd5b818401915084601f830112610362575f80fd5b815181811115610374576103746102f2565b604051601f8201601f19908116603f0116810190838211818310171561039c5761039c6102f2565b816040528281528760208487010111156103b4575f80fd5b6103c5836020830160208801610306565b979650505050505050565b6b029b4bd329029b1b0b632b2160a51b81525f82516103f681600c850160208701610306565b66202876312e352960c81b600c939091019283015250601301919050565b61736160f01b81525f8251610430816002850160208701610306565b9190910160020192915050565b5f6020828403121561044d575f80fd5b815160ff8116811461045d575f80fd5b9392505050565b5f815180845261047b816020860160208601610306565b601f01601f19169290920160200192915050565b6001600160a01b038881168252878116602083015286811660408301528516606082015260e0608082018190525f906104ca90830186610464565b82810360a08401526104dc8186610464565b91505060ff831660c083015298975050505050505050565b6001600160a01b03831681526040602082018190525f9061051790830184610464565b94935050505056fe60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612536620001005f395f8181611592015281816115bb01526116ff01526125365ff3fe6080604052600436106101af575f3560e01c80638340f549116100e7578063bb620c8d11610087578063dd62ed3e11610062578063dd62ed3e146104ac578063e30c3978146104cb578063f2fde38b146104df578063fa7a5b10146104fe575f80fd5b8063bb620c8d1461045a578063bbf44f3314610479578063d9caed121461048d575f80fd5b80639c269f30116100c25780639c269f30146103d8578063a9059cbb146103f7578063ad3cb1cc14610416578063b1bf962d14610446575f80fd5b80638340f549146103915780638da5cb5b146103b057806395d89b41146103c4575f80fd5b8063313ce5671161015257806352d1902d1161012d57806352d1902d1461033657806370a082311461034a578063715018a61461036957806379ba50971461037d575f80fd5b8063313ce567146102d9578063366554d9146103045780634f1ef28614610323575f80fd5b80631da24f3e1161018d5780631da24f3e1461022e5780631f0cbe611461026257806323b872dd146102835780632495a599146102a2575f80fd5b806306fdde03146101b3578063095ea7b3146101dd57806318160ddd1461020c575b5f80fd5b3480156101be575f80fd5b506101c761051c565b6040516101d49190611e71565b60405180910390f35b3480156101e8575f80fd5b506101fc6101f7366004611eb7565b6105a8565b60405190151581526020016101d4565b348015610217575f80fd5b506102206105c2565b6040519081526020016101d4565b348015610239575f80fd5b50610220610248366004611ee1565b6001600160a01b03165f9081526007602052604090205490565b34801561026d575f80fd5b5061028161027c366004611fcb565b6105d9565b005b34801561028e575f80fd5b506101fc61029d36600461208c565b6107af565b3480156102ad575f80fd5b506002546102c1906001600160a01b031681565b6040516001600160a01b0390911681526020016101d4565b3480156102e4575f80fd5b506005546102f29060ff1681565b60405160ff90911681526020016101d4565b34801561030f575f80fd5b5061028161031e366004611eb7565b610a59565b6102816103313660046120ca565b610aef565b348015610341575f80fd5b50610220610b0a565b348015610355575f80fd5b50610220610364366004611ee1565b610b25565b348015610374575f80fd5b50610281610b4c565b348015610388575f80fd5b50610281610b5f565b34801561039c575f80fd5b506102816103ab36600461208c565b610ba7565b3480156103bb575f80fd5b506102c1610e41565b3480156103cf575f80fd5b506101c7610e75565b3480156103e3575f80fd5b506001546102c1906001600160a01b031681565b348015610402575f80fd5b506101fc610411366004611eb7565b610e82565b348015610421575f80fd5b506101c7604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610451575f80fd5b50600654610220565b348015610465575f80fd5b50610281610474366004611eb7565b610f16565b348015610484575f80fd5b50610220610fa8565b348015610498575f80fd5b506102816104a736600461208c565b61101a565b3480156104b7575f80fd5b506102206104c636600461212a565b611284565b3480156104d6575f80fd5b506102c1611303565b3480156104ea575f80fd5b506102816104f9366004611ee1565b61132b565b348015610509575f80fd5b505f546102c1906001600160a01b031681565b6003805461052990612161565b80601f016020809104026020016040519081016040528092919081815260200182805461055590612161565b80156105a05780601f10610577576101008083540402835291602001916105a0565b820191905f5260205f20905b81548152906001019060200180831161058357829003601f168201915b505050505081565b5f60405163f1b06c8d60e01b815260040160405180910390fd5b5f6105d46105cf60065490565b6113b0565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561061e5750825b90505f8267ffffffffffffffff16600114801561063a5750303b155b905081158015610648575080155b156106665760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561069057845460ff60401b1916600160401b1785555b610699896113cf565b6106a16113e0565b6106a96113e0565b6001600160a01b038c1615806106c657506001600160a01b038b16155b806106d857506001600160a01b038a16155b156106f65760405163de0ce17d60e01b815260040160405180910390fd5b5f80546001600160a01b03808f166001600160a01b031992831617909255600180548e841690831617905560028054928d1692909116919091179055600361073e89826121e4565b50600461074b88826121e4565b506005805460ff191660ff881617905583156107a157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f80546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa1580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906122a0565b61083d5760405163183e22b760e21b81523360048201526024015b60405180910390fd5b6001600160a01b03841661086657604051634b637e8f60e11b81525f6004820152602401610834565b6001600160a01b03831661088f5760405163ec442f0560e01b81525f6004820152602401610834565b5f6108ae836b033b2e3c9fd0803ce80000006108a9610fa8565b6113e8565b6001600160a01b0386165f9081526007602052604090205490915081111561090b57846108da86610b25565b60405163391434e360e21b81526001600160a01b039092166004830152602482015260448101849052606401610834565b6001600160a01b0385165f90815260076020526040812080548392906109329084906122d3565b90915550506001600160a01b0384165f908152600760205260408120805483929061095e9084906122e6565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109aa91815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba856040516109f791815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee383604051610a4491815260200190565b60405180910390a360019150505b9392505050565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610a9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac291906122a0565b610ae15760405163183e22b760e21b8152336004820152602401610834565b610aeb82826113fc565b5050565b610af7611587565b610b008261162b565b610aeb8282611633565b5f610b136116f4565b505f805160206124e183398151915290565b6001600160a01b0381165f90815260076020526040812054610b46906113b0565b92915050565b610b5461173d565b610b5d5f61176f565b565b3380610b69611303565b6001600160a01b031614610b9b5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610834565b610ba48161176f565b50565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1091906122a0565b610c2f5760405163183e22b760e21b8152336004820152602401610834565b600254610c47906001600160a01b03163330846117a7565b6001546002546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa158015610c96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba919061238d565b6101000151604051630ed1279f60e11b81523060048201529091505f906001600160a01b03831690631da24f3e90602401602060405180830381865afa158015610d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2a91906124ae565b600154600254919250610d4a916001600160a01b03908116911685611814565b60015460025460405163617ba03760e01b81526001600160a01b039182166004820152602481018690523060448201525f606482015291169063617ba037906084015f604051808303815f87803b158015610da3575f80fd5b505af1158015610db5573d5f803e3d5ffd5b5050604051630ed1279f60e11b81523060048201525f92508391506001600160a01b03851690631da24f3e90602401602060405180830381865afa158015610dff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2391906124ae565b610e2d91906122d3565b9050610e3985826118a3565b505050505050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6004805461052990612161565b5f80546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906122a0565b610f0b5760405163183e22b760e21b8152336004820152602401610834565b610a523384846107af565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa158015610f5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f91906122a0565b610f9e5760405163183e22b760e21b8152336004820152602401610834565b610aeb82826118a3565b60015460025460405163d15e005360e01b81526001600160a01b0391821660048201525f92919091169063d15e005390602401602060405180830381865afa158015610ff6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d491906124ae565b5f546040516337649a6d60e11b81523360048201526001600160a01b0390911690636ec934da90602401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108391906122a0565b6110a25760405163183e22b760e21b8152336004820152602401610834565b6001546002546040516335ea6a7560e01b81526001600160a01b0391821660048201525f9291909116906335ea6a75906024016101e060405180830381865afa1580156110f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611115919061238d565b6101000151604051630ed1279f60e11b81523060048201529091505f906001600160a01b03831690631da24f3e90602401602060405180830381865afa158015611161573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118591906124ae565b600154600254604051631a4ca37b60e21b81526001600160a01b03918216600482015260248101879052878216604482015292935016906369328dec906064016020604051808303815f875af11580156111e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120591906124ae565b50604051630ed1279f60e11b81523060048201525f906001600160a01b03841690631da24f3e90602401602060405180830381865afa15801561124a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e91906124ae565b61127890836122d3565b9050610e3986826113fc565b5f80546040516337649a6d60e11b81526001600160a01b03848116600483015290911690636ec934da90602401602060405180830381865afa1580156112cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f091906122a0565b6112fa575f610a52565b505f1992915050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610e65565b61133361173d565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611377610e41565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f610b46826113bd610fa8565b6b033b2e3c9fd0803ce80000006113e8565b6113d76119d4565b610ba481611a1d565b610b5d6119d4565b5f6113f4848484611a4e565b949350505050565b6001600160a01b03821661142557604051634b637e8f60e11b81525f6004820152602401610834565b5f61142f826113b0565b6001600160a01b0384165f9081526007602052604090205490915082111561148c578261145b84610b25565b60405163391434e360e21b81526001600160a01b039092166004830152602482015260448101829052606401610834565b6001600160a01b0383165f90815260076020526040812080548492906114b39084906122d3565b90915550506006805483900390556040518181525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040518181525f906001600160a01b038516907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281525f906001600160a01b038516907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee3906020015b60405180910390a3505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061160d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116015f805160206124e1833981519152546001600160a01b031690565b6001600160a01b031614155b15610b5d5760405163703e46dd60e11b815260040160405180910390fd5b610ba461173d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561168d575060408051601f3d908101601f1916820190925261168a918101906124ae565b60015b6116b557604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610834565b5f805160206124e183398151915281146116e557604051632a87526960e21b815260048101829052602401610834565b6116ef8383611a72565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5d5760405163703e46dd60e11b815260040160405180910390fd5b33611746610e41565b6001600160a01b031614610b5d5760405163118cdaa760e01b8152336004820152602401610834565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610aeb82611ac7565b6040516001600160a01b03848116602483015283811660448301526064820183905261180e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611b37565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526118658482611b98565b61180e576040516001600160a01b0384811660248301525f604483015261189991869182169063095ea7b3906064016117dc565b61180e8482611b37565b6001600160a01b0382166118cc5760405163ec442f0560e01b81525f6004820152602401610834565b8060065f8282546118dd91906122e6565b90915550506001600160a01b0382165f908152600760205260408120805483019055611908826113b0565b9050826001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161194f91815260200190565b60405180910390a36040518181526001600160a01b038416905f907f1dd3ef30dcefc8c588a88fe8610a9b5946656cf752b640cff3e99b7dcfc287ba9060200160405180910390a36040518281526001600160a01b038416905f907f34c5394fa6fa162ceb662095cb2cb5706be845fcedb904f03adb00d1754c2ee39060200161157a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5d57604051631afcd79f60e31b815260040160405180910390fd5b611a256119d4565b6001600160a01b038116610b9b57604051631e4fbdf760e01b81525f6004820152602401610834565b5f825f190484118302158202611a6b5763ad251c275f526004601cfd5b5091020490565b611a7b82611c39565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611abf576116ef8282611c9c565b610aeb611d05565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f611b4b6001600160a01b03841683611d24565b905080515f14158015611b6f575080806020019051810190611b6d91906122a0565b155b156116ef57604051635274afe760e01b81526001600160a01b0384166004820152602401610834565b5f805f846001600160a01b031684604051611bb391906124c5565b5f604051808303815f865af19150503d805f8114611bec576040519150601f19603f3d011682016040523d82523d5f602084013e611bf1565b606091505b5091509150818015611c1b575080511580611c1b575080806020019051810190611c1b91906122a0565b8015611c3057505f856001600160a01b03163b115b95945050505050565b806001600160a01b03163b5f03611c6e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610834565b5f805160206124e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611cb891906124c5565b5f60405180830381855af49150503d805f8114611cf0576040519150601f19603f3d011682016040523d82523d5f602084013e611cf5565b606091505b5091509150611c30858383611d31565b3415610b5d5760405163b398979f60e01b815260040160405180910390fd5b6060610a5283835f611d8d565b606082611d4657611d4182611e26565b610a52565b8151158015611d5d57506001600160a01b0384163b155b15611d8657604051639996b31560e01b81526001600160a01b0385166004820152602401610834565b5080610a52565b606081471015611db25760405163cd78605960e01b8152306004820152602401610834565b5f80856001600160a01b03168486604051611dcd91906124c5565b5f6040518083038185875af1925050503d805f8114611e07576040519150601f19603f3d011682016040523d82523d5f602084013e611e0c565b606091505b5091509150611e1c868383611d31565b9695505050505050565b805115611e365780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015611e69578181015183820152602001611e51565b50505f910152565b602081525f8251806020840152611e8f816040850160208701611e4f565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ba4575f80fd5b5f8060408385031215611ec8575f80fd5b8235611ed381611ea3565b946020939093013593505050565b5f60208284031215611ef1575f80fd5b8135610a5281611ea3565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff81118282101715611f3457611f34611efc565b60405290565b5f67ffffffffffffffff80841115611f5457611f54611efc565b604051601f8501601f19908116603f01168101908282118183101715611f7c57611f7c611efc565b81604052809350858152868686011115611f94575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611fbc575f80fd5b610a5283833560208501611f3a565b5f805f805f805f60e0888a031215611fe1575f80fd5b8735611fec81611ea3565b96506020880135611ffc81611ea3565b9550604088013561200c81611ea3565b9450606088013561201c81611ea3565b9350608088013567ffffffffffffffff80821115612038575f80fd5b6120448b838c01611fad565b945060a08a0135915080821115612059575f80fd5b506120668a828b01611fad565b92505060c088013560ff8116811461207c575f80fd5b8091505092959891949750929550565b5f805f6060848603121561209e575f80fd5b83356120a981611ea3565b925060208401356120b981611ea3565b929592945050506040919091013590565b5f80604083850312156120db575f80fd5b82356120e681611ea3565b9150602083013567ffffffffffffffff811115612101575f80fd5b8301601f81018513612111575f80fd5b61212085823560208401611f3a565b9150509250929050565b5f806040838503121561213b575f80fd5b823561214681611ea3565b9150602083013561215681611ea3565b809150509250929050565b600181811c9082168061217557607f821691505b60208210810361219357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156116ef57805f5260205f20601f840160051c810160208510156121be5750805b601f840160051c820191505b818110156121dd575f81556001016121ca565b5050505050565b815167ffffffffffffffff8111156121fe576121fe611efc565b6122128161220c8454612161565b84612199565b602080601f831160018114612245575f841561222e5750858301515b5f19600386901b1c1916600185901b178555610e39565b5f85815260208120601f198616915b8281101561227357888601518255948401946001909101908401612254565b508582101561229057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156122b0575f80fd5b81518015158114610a52575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b4657610b466122bf565b80820180821115610b4657610b466122bf565b5f60208284031215612309575f80fd5b6040516020810181811067ffffffffffffffff8211171561232c5761232c611efc565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114612358575f80fd5b919050565b805164ffffffffff81168114612358575f80fd5b805161ffff81168114612358575f80fd5b805161235881611ea3565b5f6101e0828403121561239e575f80fd5b6123a6611f10565b6123b084846122f9565b81526123be60208401612339565b60208201526123cf60408401612339565b60408201526123e060608401612339565b60608201526123f160808401612339565b608082015261240260a08401612339565b60a082015261241360c0840161235d565b60c082015261242460e08401612371565b60e0820152610100612437818501612382565b90820152610120612449848201612382565b9082015261014061245b848201612382565b9082015261016061246d848201612382565b9082015261018061247f848201612339565b908201526101a0612491848201612339565b908201526101c06124a3848201612339565b908201529392505050565b5f602082840312156124be575f80fd5b5051919050565b5f82516124d6818460208701611e4f565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212204af9f96c6c2c3a0ae547d70337868a68b3ee9ae1c64a4b1597e83dfd5de7c09764736f6c6343000817003360806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220ef658173ec6442fec70f959a724d6a3e10076c082fad49fbe00ede42118994d064736f6c63430008170033a26469706673582212204d6e702b1990c7cdee1230db05edca8dedfe6f98fe5edeea10a5f8192ba949cb64736f6c63430008170033", + "nonce": "0x85", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbd0a71434e69bdf73528fe8df9c5f69a578ecd8e06f0ff746bef4c1a64970883", + "transactionType": "CREATE2", + "contractName": "RiskLibrary", + "contractAddress": "0x15f42baf389652cc0904f6fcc54b907a1147a7ab", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xc9240", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006109ca610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610090575f3560e01c8063624540c211610063578063624540c2146101055780639d8d9cb614610118578063c10ffc8d1461012b578063d2a01f5d1461013e575f80fd5b806308db7a26146100945780632d77afb6146100ba578063325191d2146100cf5780635defb969146100f2575b5f80fd5b6100a76100a236600461079a565b610151565b6040519081526020015b60405180910390f35b6100cd6100c836600461079a565b6103db565b005b6100e26100dd3660046107d3565b610461565b60405190151581526020016100b1565b6100cd6101003660046107d3565b610555565b6100cd6101133660046107d3565b610599565b6100e261012636600461079a565b6105ce565b6100cd6101393660046107d3565b6105e7565b6100e261014c3660046107d3565b610634565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa15801561019e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c291906107f3565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015610211573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023591906107f3565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561028c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b091906107f3565b905081156103cd5760158601546040805163313ce56760e01b815290516103c3926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610303573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610327919061080a565b61033290600a61091e565b61033c908561092c565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610385573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a9919061080a565b6103b490600a61091e565b6103be908661092c565b61072d565b93505050506103d5565b5f1993505050505b92915050565b60068201546001600160a01b0382165f908152600e84016020526040812060080154909161040891610741565b9050806104158484610151565b101561045c57816104268484610151565b604051632712e36d60e11b81526001600160a01b0390921660048301526024820152604481018290526064015b60405180910390fd5b505050565b5f818152600f8301602052604080822090516303eb153f60e51b81526004810185905260248101849052829073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156104c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104eb9190610943565b60118601549091508410801561054c575081546105129086906001600160a01b03166105ce565b80156105305750600281600281111561052d5761052d610961565b14155b8061054c5750600181600281111561054a5761054a610961565b145b95945050505050565b805f1080156105675750600882015481105b1561059557600882015460405163af90e61360e01b8152610453918391600401918252602082015260400190565b5050565b6008820154811015610595576008820154604051637a56ac9b60e01b8152610453918391600401918252602082015260400190565b60078201545f906105df8484610151565b109392505050565b600a8201548110806105fc5750600b82015481115b1561059557600a820154600b83015460405163a35ff9f160e01b81526004810184905260248101929092526044820152606401610453565b5f818152601083016020908152604080832060028101548452600f860190925280832090516303eb153f60e51b81526004810186905260248101859052839073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156106ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d19190610943565b90506106dd8686610753565b801561072357508154670de0b6b3a7640000906107049088906001600160a01b0316610151565b1080156107235750600281600281111561072057610720610961565b14155b9695505050505050565b5f610739848484610776565b949350505050565b5f8183108284180283185b9392505050565b5f61076060025f19610975565b821015801561074c575050601291909101541190565b5f825f1904841183021582026107935763ad251c275f526004601cfd5b5091020490565b5f80604083850312156107ab575f80fd5b8235915060208301356001600160a01b03811681146107c8575f80fd5b809150509250929050565b5f80604083850312156107e4575f80fd5b50508035926020909101359150565b5f60208284031215610803575f80fd5b5051919050565b5f6020828403121561081a575f80fd5b815160ff8116811461074c575f80fd5b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561087857815f190482111561085e5761085e61082a565b8085161561086b57918102915b93841c9390800290610843565b509250929050565b5f8261088e575060016103d5565b8161089a57505f6103d5565b81600181146108b057600281146108ba576108d6565b60019150506103d5565b60ff8411156108cb576108cb61082a565b50506001821b6103d5565b5060208310610133831016604e8410600b84101617156108f9575081810a6103d5565b610903838361083e565b805f19048211156109165761091661082a565b029392505050565b5f61074c60ff841683610880565b80820281158282048414176103d5576103d561082a565b5f60208284031215610953575f80fd5b81516003811061074c575f80fd5b634e487b7160e01b5f52602160045260245ffd5b5f8261098f57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220122616f64fdb1a7100b0df38e9b7d66b2c3dc7c1a4ac3d4361115d66e074b79b64736f6c63430008170033", + "nonce": "0x86", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5572ef8331b15a456c953389b549fbd225264babc091106b0afa303d27e37456", + "transactionType": "CREATE2", + "contractName": "AccountingLibrary", + "contractAddress": "0x001e0b48886404dda139132cefb03891e37c4e55", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xeeff0", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610b1a610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610055575f3560e01c80630896e1ac146100595780632bfba1471461007a5780638f8b47ca14610099578063adb08884146100ff575b5f80fd5b818015610064575f80fd5b506100786100733660046109a6565b61011e565b005b818015610085575f80fd5b506100786100943660046109ea565b610283565b8180156100a4575f80fd5b506100b86100b3366004610a3e565b610505565b6040516100f6919081516001600160a01b03168152602080830151151590820152604080830151908201526060918201519181019190915260800190565b60405180910390f35b81801561010a575f80fd5b506100786101193660046109a6565b61085c565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610175573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101999190610a88565b905081816001015f8282546101ae9190610ab3565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb969916101f8918891600401918252602082015260400190565b5f6040518083038186803b15801561020e575f80fd5b505af4158015610220573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf2691015b60405180910390a350505050565b604051633978289f60e01b815260048101869052602481018590525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156102da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102fe9190610a88565b905082816001015403610384578054821515600160a01b9081026001600160a81b03199092166001600160a01b038716908117929092178084556001840154604080519182529290910460ff161515602082015287917f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf26910160405180910390a36104fd565b600281015461039487878661011e565b604080516080810182526001600160a01b03871681528415156020820152908101859052606081018290526012880180545f91826103d183610acc565b909155505f81815260108b01602090815260409182902085518154928701511515600160a01b026001600160a81b03199093166001600160a01b039091161791909117815581850151600182018190556060860151600292909201919091559051633122a06160e11b81529192507315f42baf389652cc0904f6fcc54b907a1147a7ab9163624540c291610473918d9190600401918252602082015260400190565b5f6040518083038186803b158015610489575f80fd5b505af415801561049b573d5f803e3d5ffd5b5050505082876001600160a01b0316827f95c0961f606b338f7e6a3c8fd3b2559a53eb7b083ba4b953fed4f412644919138b8a8a6040516104f19392919092835260208301919091521515604082015260600190565b60405180910390a45050505b505050505050565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160a01b0386168152602081018590529081018390525f60608201819052601188018054908261056483610acc565b909155505f818152600f8a016020908152604091829020855181546001600160a01b0319166001600160a01b03918216178255868301516001830155868401516002830155606087015160039092019190915582518981529182018890529293508983169289169184917f0acb8d1aa087e3e5ac169a594b33e8f991bc9e717cdb4fbe0aa6e0b67c18cdb7910160405180910390a46040518060800160405280886001600160a01b03168152602001600115158152602001836020015181526020018281525092505f88600e016004015f81548092919061064490610acc565b909155505f81815260108b01602090815260409182902087518154928901511515600160a01b026001600160a81b03199093166001600160a01b039091161791909117815581870151600182018190556060880151600292909201919091559051633122a06160e11b81529192507315f42baf389652cc0904f6fcc54b907a1147a7ab9163624540c2916106e6918d9190600401918252602082015260400190565b5f6040518083038186803b1580156106fc575f80fd5b505af415801561070e573d5f803e3d5ffd5b507315f42baf389652cc0904f6fcc54b907a1147a7ab925063c10ffc8d91508b905061073a4289610ab3565b6040516001600160e01b031960e085901b168152600481019290925260248201526044015f6040518083038186803b158015610774575f80fd5b505af4158015610786573d5f803e3d5ffd5b5050505081886001600160a01b0316827f95c0961f606b338f7e6a3c8fd3b2559a53eb7b083ba4b953fed4f412644919135f19886040015189602001516040516107e59392919092835260208301919091521515604082015260600190565b60405180910390a460188901546040516340c10f1960e01b81526001600160a01b03898116600483015260248201899052909116906340c10f19906044015f604051808303815f87803b15801561083a575f80fd5b505af115801561084c573d5f803e3d5ffd5b5050505050505095945050505050565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af41580156108b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d79190610a88565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b158015610927575f80fd5b505af1158015610939573d5f803e3d5ffd5b5050505081816001015f8282546109509190610ab3565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261027592918252602082015260400190565b5f805f606084860312156109b8575f80fd5b505081359360208301359350604090920135919050565b80356001600160a01b03811681146109e5575f80fd5b919050565b5f805f805f60a086880312156109fe575f80fd5b8535945060208601359350610a15604087016109cf565b92506060860135915060808601358015158114610a30575f80fd5b809150509295509295909350565b5f805f805f60a08688031215610a52575f80fd5b85359450610a62602087016109cf565b9350610a70604087016109cf565b94979396509394606081013594506080013592915050565b5f60208284031215610a98575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ac657610ac6610a9f565b92915050565b5f60018201610add57610add610a9f565b506001019056fea2646970667358221220c468a17cb838a0aa836c2f35d7891fe4c8c7a4421d27653ce8a4d73314b980ef64736f6c63430008170033", + "nonce": "0x87", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x40f17d48d71e960279cd6436dede17d2083de8744310833b5b2d6f1040adb43c", + "transactionType": "CREATE2", + "contractName": "Withdraw", + "contractAddress": "0x0a7cc36c14f766a8561f95a0a5af90f0da46c49a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x77cee", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610515610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80630433026c14610043578063b8359e9714610058575b5f80fd5b61005661005136600461046d565b610077565b005b818015610063575f80fd5b5061005661007236600461046d565b610166565b60148201546001600160a01b031661009260208301836104a2565b6001600160a01b0316141580156100cb575060158201546001600160a01b03166100bf60208301836104a2565b6001600160a01b031614155b15610106576100dd60208201826104a2565b60405163276b4fc160e01b81526001600160a01b03909116600482015260240160405180910390fd5b80602001355f0361012a5760405163052f91cb60e51b815260040160405180910390fd5b5f61013b60608301604084016104a2565b6001600160a01b0316036101625760405163de0ce17d60e01b815260040160405180910390fd5b5050565b60158201545f906001600160a01b031661018360208401846104a2565b6001600160a01b0316036102af57601a8301546040516370a0823160e01b815233600482015261020d916020850135916001600160a01b03909116906370a08231906024015b602060405180830381865afa1580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020891906104c8565b61045b565b905080156102aa57730b703e06170f72e1fea923a4e44fea2e3b406f8c63785923ca843361024160608701604088016104a2565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610293575f80fd5b505af41580156102a5573d5f803e3d5ffd5b505050505b6103ee565b60168301546040516370a0823160e01b81523360048201526102eb916020850135916001600160a01b03909116906370a08231906024016101c9565b9050801561038857730b703e06170f72e1fea923a4e44fea2e3b406f8c637d3a9c21843361031f60608701604088016104a2565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b039182166024840152166044820152606481018490526084015f6040518083038186803b158015610371575f80fd5b505af4158015610383573d5f803e3d5ffd5b505050505b6040516316bbd7db60e11b8152600481018490523360248201527315f42baf389652cc0904f6fcc54b907a1147a7ab90632d77afb6906044015f6040518083038186803b1580156103d7575f80fd5b505af41580156103e9573d5f803e3d5ffd5b505050505b6103fe60608301604084016104a2565b6001600160a01b031661041460208401846104a2565b6001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161044e91815260200190565b60405180910390a3505050565b5f8183118284180283185b9392505050565b5f80828403608081121561047f575f80fd5b833592506060601f1982011215610494575f80fd5b506020830190509250929050565b5f602082840312156104b2575f80fd5b81356001600160a01b0381168114610466575f80fd5b5f602082840312156104d8575f80fd5b505191905056fea2646970667358221220be6f0da21e2e6975a66ba3b385933e1a5db2d5db5b303599dbaf40d74bf4f08564736f6c63430008170033", + "nonce": "0x88", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x89dbd7fa8b92821b35970fbb0b249c202512926002a573f03dd127858cb408bc", + "transactionType": "CREATE2", + "contractName": "Liquidate", + "contractAddress": "0xb5a851ebd5d501607af946d36496ebce3eb9b1d4", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1385eb", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610ecf610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063341a672c1461004e578063416a86be1461007f578063489d188114610094575b5f80fd5b818015610059575f80fd5b5061006d610068366004610c31565b6100a7565b60405190815260200160405180910390f35b61009261008d366004610c31565b6106ef565b005b6100926100a2366004610c5c565b61095d565b604051634c9829bf60e11b815260048101839052813560248201525f90819073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610100573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101249190610c8f565b6040516303eb153f60e51b815260048101869052843560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561017e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a29190610ca6565b825460405163046dbd1360e11b8152600481018890526001600160a01b0390911660248201529091505f907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610207573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022b9190610c8f565b9050845f01357f795c55cbd95e2b41aab900048a79eb75b1fa47b1858e19264fbfbad5159bdd888660200135838560405161026893929190610cd8565b60405180910390a28254604051634ec6ce5b60e11b8152600481018890526001600160a01b0390911660248201525f907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401602060405180830381865af41580156102d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f69190610d10565b61030457600387015461030a565b60048701545b6040516345ffd36d60e01b81526004810189905285546001600160a01b031660248201526001860154604482015260028601546064820152600386015460848201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc906345ffd36d9060a401602060405180830381865af415801561038b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af9190610c8f565b90505f6103c986600101548a61098f90919063ffffffff16565b90505f81831115610474575f6104006103e28486610d43565b6103fb858e5f0160020154670de0b6b3a7640000610b96565b610baa565b905061040c8184610d56565b98505f6104198a86610d43565b90505f61044985670de0b6b3a76400008f6006016001015461043b9190610d43565b670de0b6b3a7640000610bbf565b90506104558282610baa565b915061046a8288670de0b6b3a7640000610bbf565b9350505050610478565b8297505b601a8a015460018801546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156104d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f89190610d10565b5060168a015487546040516323b872dd60e01b81526001600160a01b039182166004820152336024820152604481018b90529116906323b872dd906064016020604051808303815f875af1158015610552573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105769190610d10565b5060168a0154875460058c01546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156105d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fb9190610d10565b50601a8a01546040805163bbf44f3360e01b815290516001600160a01b039092169163bbf44f33916004808201926020929091908290030181865afa158015610646573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066a9190610c8f565b60038801556001870154604051632b6c222160e21b8152600481018c90528a356024820152604481019190915273001e0b48886404dda139132cefb03891e37c4e559063adb08884906064015f6040518083038186803b1580156106cc575f80fd5b505af41580156106de573d5f803e3d5ffd5b505050505050505050505092915050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a9190610c8f565b604051631928c8e960e11b815260048101859052833560248201529091507315f42baf389652cc0904f6fcc54b907a1147a7ab9063325191d290604401602060405180830381865af41580156107c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e69190610d10565b61092d57805460405163046dbd1360e11b8152600481018590526001600160a01b0390911660248201528235907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af415801561084d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108719190610c8f565b6040516303eb153f60e51b8152600481018690528435602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156108c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ea9190610ca6565b60028111156108fb576108fb610cc4565b604051636a176f8160e01b81526004810193909352602483019190915260ff1660448201526064015b60405180910390fd5b42826040013510156109585760408051639298e9a960e01b8152908301356004820152602401610924565b505050565b81602001358110156109585760405163534a695160e01b81526004810182905260208301356024820152604401610924565b5f610b8f83600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190610c8f565b610a1690600a610e49565b610a209084610e54565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610a6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8e9190610e6b565b610a9990600a610e8b565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b079190610e6b565b610b1290600a610e8b565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa158015610b5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b809190610c8f565b610b8a9190610e54565b610b96565b9392505050565b5f610ba2848484610bcb565b949350505050565b5f818311828418028318610b8f565b92915050565b5f610ba2848484610bf7565b5f825f190484118302158202610be85763ad251c275f526004601cfd5b50910281810615159190040190565b5f825f190484118302158202610c145763ad251c275f526004601cfd5b5091020490565b5f60608284031215610c2b575f80fd5b50919050565b5f8060808385031215610c42575f80fd5b82359150610c538460208501610c1b565b90509250929050565b5f805f60a08486031215610c6e575f80fd5b83359250610c7f8560208601610c1b565b9150608084013590509250925092565b5f60208284031215610c9f575f80fd5b5051919050565b5f60208284031215610cb6575f80fd5b815160038110610b8f575f80fd5b634e487b7160e01b5f52602160045260245ffd5b838152602081018390526060810160038310610d0257634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b5f60208284031215610d20575f80fd5b81518015158114610b8f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610bb957610bb9610d2f565b80820180821115610bb957610bb9610d2f565b600181815b80851115610da357815f1904821115610d8957610d89610d2f565b80851615610d9657918102915b93841c9390800290610d6e565b509250929050565b5f82610db957506001610bb9565b81610dc557505f610bb9565b8160018114610ddb5760028114610de557610e01565b6001915050610bb9565b60ff841115610df657610df6610d2f565b50506001821b610bb9565b5060208310610133831016604e8410600b8410161715610e24575081810a610bb9565b610e2e8383610d69565b805f1904821115610e4157610e41610d2f565b029392505050565b5f610b8f8383610dab565b8082028115828204841417610bb957610bb9610d2f565b5f60208284031215610e7b575f80fd5b815160ff81168114610b8f575f80fd5b5f610b8f60ff841683610dab56fea26469706673582212208abab1e6386b7ddb6d05a9039959c21aaa4c3bf5dd7cdc90d80197309741ad9f64736f6c63430008170033", + "nonce": "0x89", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83e24315e70dc2ea664bb2f10e6379f1eb51365e77e1aa74f61dfc7da9a0ddc2", + "transactionType": "CREATE2", + "contractName": "LiquidateWithReplacement", + "contractAddress": "0x44a956a465dddf7809b0d99a1b2aa90e4b019719", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x160030", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006110cf610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80636e6595c11461004e5780639f53ee0f14610063578063c8f496ea14610076575b5f80fd5b61006161005c366004610e0e565b6100b4565b005b610061610071366004610e41565b61013c565b818015610081575f80fd5b50610095610090366004610e41565b6106db565b6040805193845260208401929092529082015260600160405180910390f35b60408051606080820183528435825284830135602083015284013581830152905163489d188160e01b815273b5a851ebd5d501607af946d36496ebce3eb9b1d49163489d18819161010b9187918690600401610e6c565b5f6040518083038186803b158015610121575f80fd5b505af4158015610133573d5f803e3d5ffd5b50505050505050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610193573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b79190610ea2565b90505f600e8401816101cf6040860160208701610eb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2060040190508373b5a851ebd5d501607af946d36496ebce3eb9b1d463416a86be90916040518060600160405280875f013581526020018760400135815260200187606001358152506040518363ffffffff1660e01b8152600401610253929190610edf565b5f6040518083038186803b158015610269575f80fd5b505af415801561027b573d5f803e3d5ffd5b50506040805180820182528454815281516001860180546080602082810285018201909652606084018281526103a698509496508895870194849290918491908401828280156102e857602002820191905f5260205f20905b8154815260200190600101908083116102d4575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561033e57602002820191905f5260205f20905b81548152602001906001019080831161032a575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561039457602002820191905f5260205f20905b815481526020019060010190808311610380575b50505050508152505081525050610ca8565b156103e5576103bb6040840160208501610eb9565b60405163ca8dc70160e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f6040516303eb153f60e51b8152600481018690528435602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561043b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045f9190610f1b565b600281111561047057610470610f07565b146104915760405163225e181360e01b8152833560048201526024016103dc565b5f4283600201546104a29190610f4d565b600a8601549091508110806104ba5750600b85015481115b156104f257600a850154600b86015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064016103dc565b81546104fe8242610f60565b11156105325761050e8142610f60565b8254604051636f2f16a760e01b8152600481019290925260248201526044016103dc565b6040805160608082018352600d8801546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b9092041683850152835180850185528654815284516001880180546080818602840181019098529482018581525f9761069f97968a968c959087019490939092849284918401828280156105df57602002820191905f5260205f20905b8154815260200190600101908083116105cb575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561063557602002820191905f5260205f20905b815481526020019060010190808311610621575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561068b57602002820191905f5260205f20905b815481526020019060010190808311610677575b505050919092525050509052509190610cc7565b905084608001358110156106d3576040516375e8162760e01b815260048101829052608086013560248201526044016103dc565b505050505050565b5f80806106ee6040850160208601610eb9565b6001600160a01b0316845f01357fa2cee1fb50e5c6f9e43f296f600e015ce0a174ee069a678e3b2c212f41a426e4866040013560405161073091815260200190565b60405180910390a3604051634c9829bf60e11b815260048101869052843560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561078f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b39190610ea2565b6040805160808101825282546001600160a01b03168152600183015460208083019190915260028401548284015260038401546060830152929350915f91600e8a0191839161080791908b01908b01610eb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2060040190505f42836040015161083c9190610f4d565b60408051606080820183528b3582528b83013560208301528b0135818301529051630d0699cb60e21b815291925073b5a851ebd5d501607af946d36496ebce3eb9b1d49163341a672c91610895918d9190600401610edf565b602060405180830381865af41580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d49190610ea2565b6040805160608082018352600d8d01546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015283518085018552875481528451600189018054608081860284018101909852948201858152979d505f97610a45978a9694958c9590870194939284929091849184018282801561098557602002820191905f5260205f20905b815481526020019060010190808311610971575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109db57602002820191905f5260205f20905b8154815260200190600101908083116109c7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a3157602002820191905f5260205f20905b815481526020019060010190808311610a1d575b505050919092525050509052509190610d70565b9050610a718460200151670de0b6b3a764000083670de0b6b3a7640000610a6c9190610f60565b610d92565b9750878460200151610a839190610f4d565b9550610a9560408a0160208b01610eb9565b85546001600160a01b0319166001600160a01b03919091169081178655602085810151600188018190555f6003890181905560408051928352928201528b35917fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd910160405180910390a360188a01546001600160a01b03166340c10f19610b2360408c0160208d01610eb9565b60018801546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610b6b575f80fd5b505af1158015610b7d573d5f803e3d5ffd5b50505050601a8a01546001600160a01b03166323b872dd30610ba560408d0160208e01610eb9565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018b90526064016020604051808303815f875af1158015610bf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190610f73565b50601a8a015460058b01546040516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018990529116906323b872dd906064016020604051808303815f875af1158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190610f73565b5050505050509250925092565b80515f90158015610cc15750610cc18260200151610d9e565b92915050565b5f815f03610ce8576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a91610d27919087908790600401610fcc565b602060405180830381865af4158015610d42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190610ea2565b90505b9392505050565b5f80610d7d858585610cc7565b9050610d898184610dc4565b95945050505050565b5f610d66848484610dd4565b8051515f90158015610db35750602082015151155b8015610cc157505060400151511590565b5f610d6983836301e13380610d92565b5f825f190484118302158202610df15763ad251c275f526004601cfd5b5091020490565b5f60a08284031215610e08575f80fd5b50919050565b5f805f60e08486031215610e20575f80fd5b83359250610e318560208601610df8565b915060c084013590509250925092565b5f8060c08385031215610e52575f80fd5b82359150610e638460208501610df8565b90509250929050565b83815260a08101610e9460208301858051825260208082015190830152604090810151910152565b826080830152949350505050565b5f60208284031215610eb2575f80fd5b5051919050565b5f60208284031215610ec9575f80fd5b81356001600160a01b0381168114610d69575f80fd5b82815260808101610d6960208301848051825260208082015190830152604090810151910152565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610f2b575f80fd5b815160038110610d69575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cc157610cc1610f39565b80820180821115610cc157610cc1610f39565b5f60208284031215610f83575f80fd5b81518015158114610d69575f80fd5b5f815180845260208085019450602084015f5b83811015610fc157815187529582019590820190600101610fa5565b509495945050505050565b60a081525f8451606060a0840152610fe8610100840182610f92565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b8084101561102f578551825294840194600193909301929084019061100f565b5060408a01519450818782030160e088015261104b8186610f92565b95505050506110898185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b505082608083015294935050505056fea2646970667358221220e1f55265d39e263d9741dd6c0a17fb50d826c865f101fd89874b30515c2998b364736f6c63430008170033", + "nonce": "0x8a", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf43c1326c4f1d880ef37bfa1a8fe54d7b34ff0e5a08f6260d246a51515a6845b", + "transactionType": "CREATE2", + "contractName": "SellCreditMarket", + "contractAddress": "0x42e124065d379e6cfc0c8554c73eae439ef8eb85", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x21c98f", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611bf1610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c80633763ed941461004e578063c074745414610063578063d73654eb146100e9575b5f80fd5b61006161005c3660046116fb565b610116565b005b6100766100713660046117f6565b6106cf565b60408051825180516001600160a01b031682526020808201511515818401528184015183850152606091820151828401528401516080808401919091529284015160a0808401919091529084015160c08301529183015160e0820152910151610100820152610120015b60405180910390f35b8180156100f4575f80fd5b506101086101033660046116fb565b610b71565b6040519081526020016100e0565b5f600e8301816101296020850185611822565b6001600160a01b0316815260208082019290925260409081015f20815180830183528154815282516001830180546080818802840181019096526060830181815293969495948701949293919284929184918401828280156101a857602002820191905f5260205f20905b815481526020019060010190808311610194575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156101fe57602002820191905f5260205f20905b8154815260200190600101908083116101ea575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561025457602002820191905f5260205f20905b815481526020019060010190808311610240575b5050505050815250508152505090505f61026d82610f96565b156102a95761027f6020840184611822565b604051637d904c7360e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b5f1983602001350361030e5750600a8301546060830135908110806102d15750600b84015481115b1561030957600a840154600b85015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064016102a0565b6105b5565b604051633978289f60e01b815260048101859052602084013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610368573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038c919061183d565b604051630e65410960e41b815260048101879052602086013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af41580156103e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040d919061183d565b82549091506001600160a01b0316331461044e578154604051630d50389360e21b81523360048201526001600160a01b0390911660248201526044016102a0565b61045c866020870135610faf565b6105a0576040516303eb153f60e51b8152600481018790526020860135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611854565b60028111156104f0576104f0611872565b825460405163046dbd1360e11b8152600481018a90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610550573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610574919061183d565b604051636c5f92df60e11b8152600481019390935260ff909116602483015260448201526064016102a0565b4281600201546105b0919061189a565b925050505b82604001355f036105d95760405163052f91cb60e51b815260040160405180910390fd5b81516105e582426118ad565b1115610619576105f581426118ad565b8251604051636f2f16a760e01b8152600481019290925260248201526044016102a0565b428360800135101561064457604051639298e9a960e01b8152608084013560048201526024016102a0565b60408051606081018252600d8601546001600160801b038116825267ffffffffffffffff600160801b820481166020840152600160c01b90910416918101919091525f90610694908490846110da565b90508360a001358111156106c85760405163a8eb792b60e01b81526004810182905260a085013560248201526044016102a0565b5050505050565b6107246040805161014081019091525f60c0820181815260e083018290526101008301829052610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f1982602001510361073f57606082015160a0820152610899565b6020820151604051630e65410960e41b81526004810185905260248101919091525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561079c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c0919061183d565b6020840151604051633978289f60e01b815260048101879052602481019190915290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561081e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610842919061183d565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff16151560208201526001830154918101919091526002918201546060820152835281015461089290429061189a565b60a0830152505b6040805160608082018352600d8601546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015260a085015186516001600160a01b03165f908152600e8901835285812086518088018852815481528751600183018054608081890284018101909b529782018881529499610a279998969793969495938701949293919284929184919084018282801561096757602002820191905f5260205f20905b815481526020019060010190808311610953575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109bd57602002820191905f5260205f20905b8154815260200190600101908083116109a9575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a1357602002820191905f5260205f20905b8154815260200190600101908083116109ff575b505050919092525050509052509190611181565b90508260c0015115610a845760408301516020808401829052840151610a7091905f1914610a5a57835160400151610a60565b83602001515b60a08501518792919085906111a3565b608085015260608401526040830152610b6a565b6040808401519083018190526020840151610b5a91905f1914610aea5783516040015160a0850151610ae59190610abc9089906112a1565b610ace90670de0b6b3a764000061189a565b610ae086670de0b6b3a76400006118ad565b6112b4565b610af0565b83604001515b5f19866020015114610b0757845160400151610b49565b6040850151610b4990610b2286670de0b6b3a76400006118ad565b60a0880151610b32908b906112a1565b610b4490670de0b6b3a764000061189a565b6112c0565b60a0860151889392919086906112cc565b6080850152606084015260208301525b5092915050565b5f606082013560208301803590610b889085611822565b6001600160a01b03167f978f8f4f7cc470e9659bf6e7b3e9cc202975ae91f6f54c3d8d97c7c20b6775ba60408601356060870135610bcc60e0890160c08a016118c0565b60408051938452602084019290925215159082015260600160405180910390a45f610c0084610071368690038601866118db565b90505f19836020013503610cc5578373001e0b48886404dda139132cefb03891e37c4e55638f8b47ca9091333385602001518660a0015142610c4291906118ad565b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b0393841660248601529290911660448401526064830152608482015260a401608060405180830381865af4158015610c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc391906118f5565b505b5f5f19846020013514610cdc578360200135610ced565b6012850154610ced9060019061189a565b905073001e0b48886404dda139132cefb03891e37c4e55632bfba1478683610d186020890189611822565b60208701516040516001600160e01b031960e087901b168152600481019490945260248401929092526001600160a01b0316604483015260648201526001608482015260a4015f6040518083038186803b158015610d74575f80fd5b505af4158015610d86573d5f803e3d5ffd5b50505050601a8501546001600160a01b03166323b872dd610daa6020870187611822565b60408086015190516001600160e01b031960e085901b1681526001600160a01b03909216600483015233602483015260448201526064016020604051808303815f875af1158015610dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e219190611974565b50601a8501546001600160a01b03166323b872dd610e426020870187611822565b6005880154608086015160608701516001600160a01b0390921691610e6791906118ad565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc9190611974565b50610eea6020850185611822565b6001600160a01b0316336001600160a01b0316827f76c745bbc9ee9f9a6c9da49c6849bb4b84b6debecb7d8cc43856e25426bd52648560200151866080015187606001518860400151610f3d91906118ad565b610f4791906118ad565b6040888101516060808b01516080808d015160a0808f01518751998a5260208a0198909852958801949094529186015284015282015260c00160405180910390a4506040015190505b92915050565b80515f90158015610f905750610f9082602001516113bc565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015611006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102a9190611854565b600281111561103b5761103b611872565b1480156110d35750604051630e65410960e41b815260048101849052602481018390526110d190849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561109e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c2919061183d565b546001600160a01b03166113e2565b155b9392505050565b5f815f036110fb576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a9161113a9190879087906004016119c9565b602060405180830381865af4158015611155573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611179919061183d565b949350505050565b5f8061118e8585856110da565b905061119a81846113fb565b95945050505050565b5f8080806111be88670de0b6b3a7640000610ae089826118ad565b90506111cb89828761140b565b925086880361121057808311156111ff57604051632da5509d60e11b815260048101829052602481018490526044016102a0565b611209838261189a565b9350611295565b8688101561127257600189015491508061122a83856118ad565b111561125d578061123b83856118ad565b604051632da5509d60e11b8152600481019290925260248201526044016102a0565b81611268848361189a565b611209919061189a565b604051631e945d9d60e11b815260048101899052602481018890526044016102a0565b50955095509592505050565b81545f906110d390836301e133806112c0565b5f611179848484611428565b5f61117984848461144c565b5f805f806112da8a866112a1565b90505f8a5f016001015489106112fc5760018b01546112f9908a61189a565b90505b888a036113245787945061131d8583610b448a670de0b6b3a76400006118ad565b93506113ae565b808a101561138b5760018b01546113639061133f908c6118ad565b61135189670de0b6b3a76400006118ad565b610b4485670de0b6b3a764000061189a565b945061137c8583610b448a670de0b6b3a76400006118ad565b60018c015490945092506113ae565b604051632da5509d60e11b815260048101829052602481018b90526044016102a0565b505096509650969350505050565b8051515f901580156113d15750602082015151155b8015610f9057505060400151511590565b60078201545f906113f38484611478565b109392505050565b5f6110d383836301e133806112b4565b5f6111798361141a86856112a1565b670de0b6b3a76400006112c0565b5f825f1904841183021582026114455763ad251c275f526004601cfd5b5091020490565b5f825f1904841183021582026114695763ad251c275f526004601cfd5b50910281810615159190040190565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa1580156114c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e9919061183d565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015611538573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155c919061183d565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d7919061183d565b905081156116ef5760158601546040805163313ce56760e01b815290516116e5926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561162a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164e9190611a96565b61165990600a611b96565b6116639085611ba4565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156116ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d09190611a96565b6116db90600a611b96565b610ae09086611ba4565b9350505050610f90565b5f199350505050610f90565b5f8082840361010081121561170e575f80fd5b8335925060e0601f1982011215611723575f80fd5b506020830190509250929050565b6001600160a01b0381168114611745575f80fd5b50565b8015158114611745575f80fd5b5f60e08284031215611765575f80fd5b60405160e0810181811067ffffffffffffffff8211171561179457634e487b7160e01b5f52604160045260245ffd5b60405290508082356117a581611731565b808252506020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c08301356117e981611748565b60c0919091015292915050565b5f806101008385031215611808575f80fd5b823591506118198460208501611755565b90509250929050565b5f60208284031215611832575f80fd5b81356110d381611731565b5f6020828403121561184d575f80fd5b5051919050565b5f60208284031215611864575f80fd5b8151600381106110d3575f80fd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f9057610f90611886565b80820180821115610f9057610f90611886565b5f602082840312156118d0575f80fd5b81356110d381611748565b5f60e082840312156118eb575f80fd5b6110d38383611755565b5f60808284031215611905575f80fd5b6040516080810181811067ffffffffffffffff8211171561193457634e487b7160e01b5f52604160045260245ffd5b604052825161194281611731565b8152602083015161195281611748565b6020820152604083810151908201526060928301519281019290925250919050565b5f60208284031215611984575f80fd5b81516110d381611748565b5f815180845260208085019450602084015f5b838110156119be578151875295820195908201906001016119a2565b509495945050505050565b60a081525f8451606060a08401526119e561010084018261198f565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b80841015611a2c5785518252948401946001939093019290840190611a0c565b5060408a01519450818782030160e0880152611a48818661198f565b9550505050611a868185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b5050826080830152949350505050565b5f60208284031215611aa6575f80fd5b815160ff811681146110d3575f80fd5b600181815b80851115611af057815f1904821115611ad657611ad6611886565b80851615611ae357918102915b93841c9390800290611abb565b509250929050565b5f82611b0657506001610f90565b81611b1257505f610f90565b8160018114611b285760028114611b3257611b4e565b6001915050610f90565b60ff841115611b4357611b43611886565b50506001821b610f90565b5060208310610133831016604e8410600b8410161715611b71575081810a610f90565b611b7b8383611ab6565b805f1904821115611b8e57611b8e611886565b029392505050565b5f6110d360ff841683611af8565b8082028115828204841417610f9057610f9061188656fea2646970667358221220f4b5ea672afb7e13b5aa5eb52e93495ee748409b40231033590b308866f57aa164736f6c63430008170033", + "nonce": "0x8b", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0c73848f4e0f798b1922d5c37b5217ebcfde388af726842c05de7d31a0f17f69", + "transactionType": "CREATE2", + "contractName": "SelfLiquidate", + "contractAddress": "0x49d3e25408fc670db9a3e83ad3ae92c85235a957", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xd2ca0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006109ad610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c8063a606b8e414610043578063c483402014610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046108ae565b610077565b005b6100626100723660046108ae565b6102e5565b6040518135907f1b0c722c962d641d9d4f81520102722fe69160219e22f1601e5fd2c3d5f5ed08905f90a2604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156100f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011d91906108e3565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019b91906108e3565b6040516302a349f760e41b81526004810186905283546001600160a01b038116602483015260a01c60ff161515604482015260018401546064820152600284015460848201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90632a349f709060a401602060405180830381865af4158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906108e3565b60028401546001850154919250610260918791908735906105e5565b601685015482546040516323b872dd60e01b81526001600160a01b039182166004820152336024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156102b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dd91906108fa565b505050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561033c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036091906108e3565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af41580156103ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103de91906108e3565b60405163d2a01f5d60e01b815260048101869052843560248201529091507315f42baf389652cc0904f6fcc54b907a1147a7ab9063d2a01f5d90604401602060405180830381865af4158015610436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a91906108fa565b6105a157805460405163046dbd1360e11b8152600481018690526001600160a01b0390911660248201528335907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af41580156104c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e591906108e3565b6040516303eb153f60e51b8152600481018790528535602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af415801561053a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055e9190610920565b600281111561056f5761056f61093e565b6040516327938b9760e01b81526004810193909352602483019190915260ff1660448201526064015b60405180910390fd5b81546001600160a01b031633146105df57815460405163674386ff60e11b81523360048201526001600160a01b039091166024820152604401610598565b50505050565b6105f08484836105fb565b6105df848383610753565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610652573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067691906108e3565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b1580156106c6575f80fd5b505af11580156106d8573d5f803e3d5ffd5b5050505081816001015f8282546106ef9190610952565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261074592918252602082015260400190565b60405180910390a350505050565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156107aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce91906108e3565b905081816001015f8282546107e39190610952565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb9699161082d918891600401918252602082015260400190565b5f6040518083038186803b158015610843575f80fd5b505af4158015610855573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf269101610745565b5f8082840360408112156108c0575f80fd5b833592506020601f19820112156108d5575f80fd5b506020830190509250929050565b5f602082840312156108f3575f80fd5b5051919050565b5f6020828403121561090a575f80fd5b81518015158114610919575f80fd5b9392505050565b5f60208284031215610930575f80fd5b815160038110610919575f80fd5b634e487b7160e01b5f52602160045260245ffd5b8181038181111561097157634e487b7160e01b5f52601160045260245ffd5b9291505056fea26469706673582212206ed7971a7c1f96434aa32fe65b918f4585bf689abf2dc2a4823fa751bd347b2064736f6c63430008170033", + "nonce": "0x8c", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0633b005c2b398d3c9f57e31267d8137c18fb2a9d62f92726463ef58dfcf9d7d", + "transactionType": "CREATE2", + "contractName": "Compensate", + "contractAddress": "0x82b512fac9c21356bf5a050c710d4de7b7ff6eda", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1e2e95", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061176b610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806332f4053b146100435780634bc1120114610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046114a3565b610077565b005b6100626100723660046114a3565b610572565b8060200135815f01357f016d78045033c05583b0015db279cb36d1a0c3f2d8a52695dc17867864286c0583604001356040516100b591815260200190565b60405180910390a3604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610114573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013891906114d8565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b691906114d8565b90505f6101cb84604001358460010154610b8a565b90506101ff60405180608001604052805f6001600160a01b031681526020015f151581526020015f81526020015f81525090565b5f5f198660200135036102b05760028401546040516347c5a3e560e11b8152600481018990523360248201819052604482015260648101859052608481019190915273001e0b48886404dda139132cefb03891e37c4e5590638f8b47ca9060a401608060405180830381865af415801561027b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029f9190611503565b915084600101548314159050610386565b604051633978289f60e01b8152600481018890526020870135602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032c91906114d8565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff161515602082015260018301549181018290526002909201546060830152909250610379908490610b8a565b9250816040015183141590505b6002850154610399908890883586610b9e565b73001e0b48886404dda139132cefb03891e37c4e55632bfba1478860208901355f19146103ca5788602001356103db565b60128a01546103db906001906115a0565b885460405160e085901b6001600160e01b0319168152600481019390935260248301919091526001600160a01b038116604483015260648201879052600160a01b900460ff161515608482015260a4015f6040518083038186803b158015610441575f80fd5b505af4158015610453573d5f803e3d5ffd5b5050505080156105695760018701545f906104e490610473908a90610bba565b60168a01546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df91906114d8565b610b8a565b601689015460058a01546040516323b872dd60e01b81523360048201526001600160a01b0391821660248201526044810184905292935016906323b872dd906064016020604051808303815f875af1158015610542573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056691906115b3565b50505b50505050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156105c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ed91906114d8565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066b91906114d8565b90505f61068084604001358460010154610b8a565b90505f6040516303eb153f60e51b8152600481018790528535602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156106d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fc91906115e0565b600281111561070d5761070d6115cc565b146107335760405163225e181360e01b8152843560048201526024015b60405180910390fd5b5f198460200135036107a6575f42836002015461075091906115a0565b600a8701549091508110806107685750600b86015481115b156107a057600a860154600b87015460405163a35ff9f160e01b8152600481018490526024810192909252604482015260640161072a565b50610b25565b604051633978289f60e01b815260048101869052602085013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610800573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082491906114d8565b604051630e65410960e41b815260048101889052602087013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610881573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a591906114d8565b90506108b5876020880135610dba565b6109f9576040516303eb153f60e51b8152600481018890526020870135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610914573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093891906115e0565b6002811115610949576109496115cc565b825460405163046dbd1360e11b8152600481018b90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af41580156109a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd91906114d8565b604051636c5f92df60e11b8152600481019390935260ff9091166024830152604482015260640161072a565b604051630e65410960e41b8152600481018890526020870135602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906114d8565b6002015484600201541015610aaa57604051633370566f60e21b8152863560048201526020870135602482015260440161072a565b835482546001600160a01b03908116911614610ae75781546040516319fe2f2b60e21b81526001600160a01b03909116600482015260240161072a565b8535602087013503610b12576040516310cc79db60e21b81526020870135600482015260240161072a565b610b20838360010154610b8a565b925050505b81546001600160a01b03163314610b63578154604051630b662e6b60e31b81523360048201526001600160a01b03909116602482015260440161072a565b805f03610b835760405163052f91cb60e51b815260040160405180910390fd5b5050505050565b5f8183118284180283185b90505b92915050565b610ba9848483610ee4565b610bb484838361103c565b50505050565b5f610b9583600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3691906114d8565b610c4190600a6116e5565b610c4b90846116f0565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610c95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb99190611707565b610cc490600a611727565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015610d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611707565b610d3d90600a611727565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa158015610d87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dab91906114d8565b610db591906116f0565b611197565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3591906115e0565b6002811115610e4657610e466115cc565b148015610b955750604051630e65410960e41b81526004810184905260248101839052610edc90849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd91906114d8565b546001600160a01b03166111ab565b159392505050565b604051634c9829bf60e11b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906114d8565b60188501548154604051632770a7eb60e21b81526001600160a01b039182166004820152602481018690529293501690639dc29fac906044015f604051808303815f87803b158015610faf575f80fd5b505af1158015610fc1573d5f803e3d5ffd5b5050505081816001015f828254610fd891906115a0565b90915550508054600182015460038301546040516001600160a01b039093169286927fe26b988e7697e02e61da8982c50ac17b3154bc97035c55fe9cacc9e8d07010cd9261102e92918252602082015260400190565b60405180910390a350505050565b604051633978289f60e01b815260048101849052602481018390525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b791906114d8565b905081816001015f8282546110cc91906115a0565b90915550506001810154604051635defb96960e01b81527315f42baf389652cc0904f6fcc54b907a1147a7ab91635defb96991611116918891600401918252602082015260400190565b5f6040518083038186803b15801561112c575f80fd5b505af415801561113e573d5f803e3d5ffd5b50508254600184015460408051918252600160a01b830460ff16151560208301526001600160a01b0390921693508692507f16d51caf17ac55f2fdc0f9a732aa48892073855f9deb87364c6cceaf08aedf26910161102e565b5f6111a38484846111c4565b949350505050565b60078201545f906111bc84846111f0565b109392505050565b5f825f1904841183021582026111e15763ad251c275f526004601cfd5b50910281810615159190040190565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa15801561123d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126191906114d8565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156112b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d491906114d8565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f91906114d8565b9050811561146c5760158601546040805163313ce56760e01b81529051611462926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156113a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c69190611707565b6113d190600a611727565b6113db90856116f0565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114489190611707565b61145390600a611727565b61145d90866116f0565b611478565b9350505050610b98565b5f199350505050610b98565b5f6111a38484845f825f19048411830215820261149c5763ad251c275f526004601cfd5b5091020490565b5f8082840360808112156114b5575f80fd5b833592506060601f19820112156114ca575f80fd5b506020830190509250929050565b5f602082840312156114e8575f80fd5b5051919050565b805180151581146114fe575f80fd5b919050565b5f60808284031215611513575f80fd5b6040516080810181811067ffffffffffffffff8211171561154257634e487b7160e01b5f52604160045260245ffd5b60405282516001600160a01b038116811461155b575f80fd5b8152611569602084016114ef565b602082015260408301516040820152606083015160608201528091505092915050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b9857610b9861158c565b5f602082840312156115c3575f80fd5b610b95826114ef565b634e487b7160e01b5f52602160045260245ffd5b5f602082840312156115f0575f80fd5b8151600381106115fe575f80fd5b9392505050565b600181815b8085111561163f57815f19048211156116255761162561158c565b8085161561163257918102915b93841c939080029061160a565b509250929050565b5f8261165557506001610b98565b8161166157505f610b98565b816001811461167757600281146116815761169d565b6001915050610b98565b60ff8411156116925761169261158c565b50506001821b610b98565b5060208310610133831016604e8410600b84101617156116c0575081810a610b98565b6116ca8383611605565b805f19048211156116dd576116dd61158c565b029392505050565b5f610b958383611647565b8082028115828204841417610b9857610b9861158c565b5f60208284031215611717575f80fd5b815160ff811681146115fe575f80fd5b5f610b9560ff84168361164756fea2646970667358221220ef3350c872e07a2009e76f76f036f4a8605a10f0146f920a435193e8a53ee47764736f6c63430008170033", + "nonce": "0x8d", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf2a2eeeb3d0905c9c854e6bc108faae663f2e9f4de78adbed267c60a3089b198", + "transactionType": "CREATE2", + "contractName": "Claim", + "contractAddress": "0x1658c459ee72984769438696c82e419c137484fe", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x79d9e", + "input": "0x000000000000000000000000000000000000000000000000000000000000000061058c610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c806341d373f214610043578063af240afe14610064575b5f80fd5b81801561004e575f80fd5b5061006261005d3660046104b2565b610077565b005b6100626100723660046104b2565b61031f565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156100ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f291906104e7565b604051630e65410960e41b815260048101859052833560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561014c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017091906104e7565b6001830154601a8601546040805163bbf44f3360e01b815290519394505f936101f493926001600160a01b03169163bbf44f339160048083019260209291908290030181865afa1580156101c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ea91906104e7565b846003015461047a565b6001840154604051630225b86b60e21b81526004810188905286356024820152604481019190915290915073001e0b48886404dda139132cefb03891e37c4e5590630896e1ac906064015f6040518083038186803b158015610254575f80fd5b505af4158015610266573d5f803e3d5ffd5b50505050601a85015483546040516323b872dd60e01b81523060048201526001600160a01b039182166024820152604481018490529116906323b872dd906064016020604051808303815f875af11580156102c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e791906104fe565b5060028301546040518535907f022e3d29644ead4083349ca84d24bcac368b2461819b70f5921fea15de4dec4d905f90a35050505050565b604051633978289f60e01b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af4158015610376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039a91906104e7565b905060026040516303eb153f60e51b8152600481018590528335602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156103f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104179190610538565b600281111561042857610428610524565b1461044e57604051631e81d90160e11b8152823560048201526024015b60405180910390fd5b80600101545f0361047557604051631337c33760e21b815282356004820152602401610445565b505050565b5f61048684848461048e565b949350505050565b5f825f1904841183021582026104ab5763ad251c275f526004601cfd5b5091020490565b5f8082840360408112156104c4575f80fd5b833592506020601f19820112156104d9575f80fd5b506020830190509250929050565b5f602082840312156104f7575f80fd5b5051919050565b5f6020828403121561050e575f80fd5b8151801515811461051d575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610548575f80fd5b81516003811061051d575f80fdfea2646970667358221220e6f9a75297ba4b64946e4474868e4240300c35578ead6bfb8a1125d0864c2cd364736f6c63430008170033", + "nonce": "0x8e", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8b6a2a06bd0b1cf8feb40f9bab0e38fd83734d0dd19c31d2798ff837bb862f52", + "transactionType": "CREATE2", + "contractName": "Repay", + "contractAddress": "0x9f239921a3076cc9a0d24b28adebd52edd6895a2", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7172d", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000610519610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003e575f3560e01c80628550581461004257806364140a8314610057575b5f80fd5b610055610050366004610419565b610076565b005b818015610062575f80fd5b50610055610071366004610419565b610206565b60026040516303eb153f60e51b8152600481018490528235602482015273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156100cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f19190610462565b60028111156101025761010261044e565b0361012857604051630238826360e01b8152813560048201526024015b60405180910390fd5b6101386040820160208301610487565b604051634c9829bf60e11b815260048101849052823560248201526001600160a01b03919091169073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561019a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104ad565b546001600160a01b031614610202576101dd6040820160208301610487565b6040516324913f8f60e21b81526001600160a01b03909116600482015260240161011f565b5050565b604051634c9829bf60e11b815260048101839052813560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af415801561025d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028191906104ad565b601a84015460018201546040516323b872dd60e01b815233600482015230602482015260448101919091529192506001600160a01b0316906323b872dd906064016020604051808303815f875af11580156102de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030291906104c4565b50601a8301546040805163bbf44f3360e01b815290516001600160a01b039092169163bbf44f33916004808201926020929091908290030181865afa15801561034d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037191906104ad565b60038201556001810154604051632b6c222160e21b81526004810185905283356024820152604481019190915273001e0b48886404dda139132cefb03891e37c4e559063adb08884906064015f6040518083038186803b1580156103d3575f80fd5b505af41580156103e5573d5f803e3d5ffd5b5050604051843592507fa6ffc78a660e4971a47a0f916a0abae483804e6f42c9292ed06aa64f8fe4623091505f90a2505050565b5f80828403606081121561042b575f80fd5b833592506040601f1982011215610440575f80fd5b506020830190509250929050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610472575f80fd5b815160038110610480575f80fd5b9392505050565b5f60208284031215610497575f80fd5b81356001600160a01b0381168114610480575f80fd5b5f602082840312156104bd575f80fd5b5051919050565b5f602082840312156104d4575f80fd5b81518015158114610480575f80fdfea2646970667358221220ec1710e2186d2bc90d15424504aa4ef07b9edefe99f7cc965bfe1e780341259b64736f6c63430008170033", + "nonce": "0x8f", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd063cf4db0aff6e3b229118cd2cbd0d46d5d4708cae035586cfae447b47d8ab5", + "transactionType": "CREATE2", + "contractName": "BuyCreditMarket", + "contractAddress": "0x43d1c35eaff6779751cfcf6000c8d7c30dc4655a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x21a8df", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000611bd5610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063162103071461004e5780633903304a14610063578063b71df57f1461008c575b5f80fd5b61006161005c36600461168e565b6100b9565b005b61007661007136600461171d565b610693565b60405161008391906117b0565b60405180910390f35b818015610097575f80fd5b506100ab6100a636600461171d565b610b1e565b604051908152602001610083565b5f805f19836020013503610135576100d4602084018461183b565b600a850154909250606084013591508110806100f35750600b84015481115b1561013057600a840154600b85015460405163a35ff9f160e01b815260048101849052602481019290925260448201526064015b60405180910390fd5b610407565b604051633978289f60e01b815260048101859052602084013560248201525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af415801561018f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b39190611856565b604051630e65410960e41b815260048101879052602086013560248201529091505f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af4158015610210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102349190611856565b9050610244866020870135610f4f565b610388576040516303eb153f60e51b8152600481018790526020860135602482018190529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af41580156102a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c7919061186d565b60028111156102d8576102d861188b565b825460405163046dbd1360e11b8152600481018a90526001600160a01b0390911660248201527315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190611856565b604051636c5f92df60e11b8152600481019390935260ff90911660248301526044820152606401610127565b81546001600160a01b03165f908152600e870160205260409020600981015460ff16806103be57508254600160a01b900460ff16155b156103e2576040516369ac754960e11b815260208701356004820152602401610127565b825460028301546001600160a01b0390911695506104019042906118b3565b93505050505b6001600160a01b0382165f908152600e850160209081526040808320815180830183526004820180548252835160059093018054608081880286018101909652606085018181529396929592870194939192849291849184018282801561048b57602002820191905f5260205f20905b815481526020019060010190808311610477575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156104e157602002820191905f5260205f20905b8154815260200190600101908083116104cd575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561053757602002820191905f5260205f20905b815481526020019060010190808311610523575b50505050508152505081525050905061054f8161107a565b156105785760405163ca8dc70160e01b81526001600160a01b0384166004820152602401610127565b83604001355f0361059c5760405163052f91cb60e51b815260040160405180910390fd5b80516105a883426118c6565b11156105dc576105b882426118c6565b8151604051636f2f16a760e01b815260048101929092526024820152604401610127565b428460800135101561060757604051639298e9a960e01b815260808501356004820152602401610127565b60408051606081018252600d8701546001600160801b038116825267ffffffffffffffff600160801b820481166020840152600160c01b90910416918101919091525f9061065790839085611093565b90508460a0013581101561068b576040516375e8162760e01b81526004810182905260a08601356024820152604401610127565b505050505050565b60408051610160810182525f60e0820181815261010083018290526101208301829052610140830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c0820152908201516001016107125781516001600160a01b03166020820152606082015160c082015261087a565b6020820151604051630e65410960e41b81526004810185905260248101919091525f9073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561076f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190611856565b6020840151604051633978289f60e01b815260048101879052602481019190915290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108159190611856565b6040805160808101825282546001600160a01b038082168352600160a01b90910460ff1615156020808401919091526001850154938301939093526002938401546060830152818652905116908401528101546108739042906118b3565b60c0830152505b6040805160608082018352600d8601546001600160801b038116835267ffffffffffffffff600160801b82048116602080860191909152600160c01b909204168385015260c0850151858201516001600160a01b03165f908152600e89018352858120865180880188526004820180548252885160059093018054608081890286018101909b529784018881529499610a0e99989697939692959387019493919284929184919084018282801561094e57602002820191905f5260205f20905b81548152602001906001019080831161093a575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156109a457602002820191905f5260205f20905b815481526020019060010190808311610990575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156109fa57602002820191905f5260205f20905b8154815260200190600101908083116109e6575b50505091909252505050905250919061113a565b90508260c0015115610ac9576040830151606083018190526020840151610ab591905f1914610a5e57835160400151610a5990670de0b6b3a7640000610a5486826118c6565b61115c565b610a64565b83606001515b5f19866020015114610a7b57845160400151610aa4565b6060850151610aa490610a9686670de0b6b3a76400006118c6565b670de0b6b3a7640000611168565b60c086015188939291908690611174565b60a085015260808401526040830152610b17565b6040808401519083018190526020840151610b0791905f1914610af157835160400151610af7565b83604001515b60c0850151879291908590611246565b60a0850152608084015260608301525b5092915050565b5f81606001518260200151835f01516001600160a01b03167fca34947de24ba1510e856663db085246362b4a5eee75687e6f93d56444820b9685604001518660c00151604051610b7a9291909182521515602082015260400190565b60405180910390a45f610b8d8484610693565b90505f19836020015103610c5a578373001e0b48886404dda139132cefb03891e37c4e55638f8b47ca909133846020015185604001518660c0015142610bd391906118c6565b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b0393841660248601529290911660448401526064830152608482015260a401608060405180830381865af4158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5491906118d9565b50610cde565b60208301516040828101519051632bfba14760e01b815260048101879052602481019290925233604483015260648201526001608482015273001e0b48886404dda139132cefb03891e37c4e5590632bfba1479060a4015f6040518083038186803b158015610cc7575f80fd5b505af4158015610cd9573d5f803e3d5ffd5b505050505b601a840154602082015160a0830151608084015160608501516001600160a01b03909416936323b872dd93339390929091610d1991906118b3565b610d2391906118b3565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d989190611958565b50601a840154600585015460a083015160808401516001600160a01b03938416936323b872dd933393911691610dce91906118c6565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af1158015610e1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e439190611958565b505f5f19846020015114610e5b578360200151610e6c565b6012850154610e6c906001906118b3565b9050336001600160a01b031682602001516001600160a01b0316827f76c745bbc9ee9f9a6c9da49c6849bb4b84b6debecb7d8cc43856e25426bd5264856040015186606001518760a0015188608001518960600151610ecb91906118b3565b610ed591906118b3565b88608001518960a001518a60c00151604051610f1996959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a48160a0015182608001518360600151610f3a91906118b3565b610f4491906118b3565b925050505b92915050565b5f806040516303eb153f60e51b8152600481018590526024810184905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610fa6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fca919061186d565b6002811115610fdb57610fdb61188b565b1480156110735750604051630e65410960e41b8152600481018490526024810183905261107190849073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc9063e654109090604401602060405180830381865af415801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190611856565b546001600160a01b0316611337565b155b9392505050565b80515f90158015610f495750610f498260200151611350565b5f815f036110b4576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a916110f39190879087906004016119ad565b602060405180830381865af415801561110e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111329190611856565b949350505050565b5f80611147858585611093565b90506111538184611376565b95945050505050565b5f611132848484611386565b5f6111328484846113b2565b5f805f8688036111935785925061118c8989866113d6565b915061123a565b868810156112175760018901548810156111d0576001890154604051632da5509d60e11b8152600481019190915260248101899052604401610127565b60018901545f906111e1908a6118b3565b90506111f981610a9688670de0b6b3a76400006118c6565b93506112068a82876113d6565b9250895f016001015491505061123a565b604051632da5509d60e11b81526004810188905260248101899052604401610127565b96509650969350505050565b5f805f85870361127b5761126786670de0b6b3a7640000610a5488826118c6565b92506112748884866113d6565b91506112ee565b858710156112cb575f61129b88670de0b6b3a7640000610a5489826118c6565b60018a01549091506112ad90826118c6565b93506112ba8982876113d6565b9250885f01600101549150506112ee565b604051631e945d9d60e11b81526004810188905260248101879052604401610127565b826112f982846118c6565b111561132c578261130a82846118c6565b604051632da5509d60e11b815260048101929092526024820152604401610127565b955095509592505050565b60078201545f9061134884846113f3565b109392505050565b8051515f901580156113655750602082015151155b8015610f4957505060400151511590565b5f61107383836301e13380611168565b5f825f1904841183021582026113a35763ad251c275f526004601cfd5b50910281810615159190040190565b5f825f1904841183021582026113cf5763ad251c275f526004601cfd5b5091020490565b5f611132836113e5868561167b565b670de0b6b3a764000061115c565b60168201546040516370a0823160e01b81526001600160a01b0383811660048301525f9283929116906370a0823190602401602060405180830381865afa158015611440573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114649190611856565b60188501546040516370a0823160e01b81526001600160a01b0386811660048301529293505f92909116906370a0823190602401602060405180830381865afa1580156114b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d79190611856565b90505f85600c015f015f9054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115529190611856565b9050811561166f5760158601546040805163313ce56760e01b81529051611665926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156115a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c99190611a7a565b6115d490600a611b7a565b6115de9085611b88565b60148801546040805163313ce56760e01b8152905185926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611627573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164b9190611a7a565b61165690600a611b7a565b6116609086611b88565b611168565b9350505050610f49565b5f199350505050610f49565b81545f9061107390836301e1338061115c565b5f808284036101008112156116a1575f80fd5b8335925060e0601f19820112156116b6575f80fd5b506020830190509250929050565b60405160e0810167ffffffffffffffff811182821017156116f357634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b038116811461170d575f80fd5b50565b801515811461170d575f80fd5b5f80828403610100811215611730575f80fd5b8335925060e0601f1982011215611745575f80fd5b5061174e6116c4565b602084013561175c816116f9565b8082525060408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a082015260e08401356117a081611710565b60c0820152919491935090915050565b815180516001600160a01b03168252602080820151151581840152604080830151908401526060918201519183019190915282015161014082019061180060808401826001600160a01b03169052565b50604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015260c083015161012083015292915050565b5f6020828403121561184b575f80fd5b8135611073816116f9565b5f60208284031215611866575f80fd5b5051919050565b5f6020828403121561187d575f80fd5b815160038110611073575f80fd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f4957610f4961189f565b80820180821115610f4957610f4961189f565b5f608082840312156118e9575f80fd5b6040516080810181811067ffffffffffffffff8211171561191857634e487b7160e01b5f52604160045260245ffd5b6040528251611926816116f9565b8152602083015161193681611710565b6020820152604083810151908201526060928301519281019290925250919050565b5f60208284031215611968575f80fd5b815161107381611710565b5f815180845260208085019450602084015f5b838110156119a257815187529582019590820190600101611986565b509495945050505050565b60a081525f8451606060a08401526119c9610100840182611973565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b80841015611a1057855182529484019460019390930192908401906119f0565b5060408a01519450818782030160e0880152611a2c8186611973565b9550505050611a6a8185018780516001600160801b0316825260208082015167ffffffffffffffff9081169184019190915260409182015116910152565b5050826080830152949350505050565b5f60208284031215611a8a575f80fd5b815160ff81168114611073575f80fd5b600181815b80851115611ad457815f1904821115611aba57611aba61189f565b80851615611ac757918102915b93841c9390800290611a9f565b509250929050565b5f82611aea57506001610f49565b81611af657505f610f49565b8160018114611b0c5760028114611b1657611b32565b6001915050610f49565b60ff841115611b2757611b2761189f565b50506001821b610f49565b5060208310610133831016604e8410600b8410161715611b55575081810a610f49565b611b5f8383611a9a565b805f1904821115611b7257611b7261189f565b029392505050565b5f61107360ff841683611adc565b8082028115828204841417610f4957610f4961189f56fea2646970667358221220ce2d768391317091ac7d72e42c833381eca5f1a6f4fb7e0def640e0d9dff538464736f6c63430008170033", + "nonce": "0x90", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x38211ee8646c4323b784f49474cf76db82c9c787c5eb5e2daefb0953b5c0646f", + "transactionType": "CREATE2", + "contractName": "MarketFactoryLibrary", + "contractAddress": "0xea61a6e3fe0c147a0989d4a526f5ccae940c7656", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x6dfcf4", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000615d22610035600b8282823980515f1a60731461002957634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c8063310657f914610038575b5f80fd5b818015610043575f80fd5b50610057610052366004610165565b610073565b6040516001600160a01b03909116815260200160405180910390f35b5f8060405161008190610118565b604051809103905ff08015801561009a573d5f803e3d5ffd5b5087878787876040516024016100b4959493929190610282565b60408051601f198184030181529181526020820180516001600160e01b03166330d086f960e11b179052516100e890610126565b6100f392919061033d565b604051809103905ff08015801561010c573d5f803e3d5ffd5b50979650505050505050565b615563806200039a83390190565b6103f080620058fd83390190565b80356001600160a01b038116811461014a575f80fd5b919050565b5f60c0828403121561015f575f80fd5b50919050565b5f805f805f85870361028081121561017b575f80fd5b61018487610134565b9550610193886020890161014f565b94506101a28860e0890161014f565b9350604061019f19820112156101b6575f80fd5b6101a08701925060a06101df19820112156101cf575f80fd5b506101e0860190509295509295909350565b6001600160a01b036101f282610134565b168252602081013567ffffffffffffffff8116808214610210575f80fd5b80602085015250505050565b6001600160a01b038061022e83610134565b1683528061023e60208401610134565b1660208401528061025160408401610134565b1660408401528061026460608401610134565b1660608401528061027760808401610134565b166080840152505050565b5f6102808201905060018060a01b03808816835286356020840152602087013560408401526040870135606084015260608701356080840152608087013560a0840152806102d260a08901610134565b1660c084015250843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a08501356101808301526103256101a08301856101e1565b6103336101e083018461021c565b9695505050505050565b60018060a01b03831681525f60206040602084015283518060408501525f5b818110156103785785810183015185820160600152820161035c565b505f606082860101526060601f19601f83011685010192505050939250505056fe60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615463620001005f395f818161347d015281816134a601526135e701526154635ff3fe60806040526004361061030d575f3560e01c80635cbc51eb116101a3578063ad3cb1cc116100f2578063d8d933a511610092578063f45bf01c1161006d578063f45bf01c14610a9a578063f731a57a14610aad578063f85c3cd414610acc578063fd17174a14610aeb575f80fd5b8063d8d933a514610a55578063e05001f514610a68578063e5af06ce14610a7b575f80fd5b8063ccc96815116100cd578063ccc96815146109e5578063ccd8d4d114610a04578063d547741f14610a17578063d795f49414610a36575f80fd5b8063ad3cb1cc1461096a578063b5ec74871461099a578063ca40742c146109c6575f80fd5b80637dc0d1d01161015d5780638e572776116101385780638e5727761461090557806391d1485414610918578063a217fddf14610937578063ac9650d81461094a575f80fd5b80637dc0d1d01461089d5780637f417c06146108de5780638456cb59146108f1575f80fd5b80635cbc51eb1461068457806361a10df2146106b057806364eb0a71146106cf57806373d4a13a146106ee57806376c1b82f146108125780637c90a6ca1461083e575f80fd5b80632ed28ba21161025f5780633f4ba83a1161021957806352d1902d116101f457806352d1902d146105f757806354137c7e1461060b57806354fd4d501461062a5780635c975abb14610661575f80fd5b80633f4ba83a146105b15780634cbd882c146105c55780634f1ef286146105e4575f80fd5b80632ed28ba2146104f55780632f2ff15d1461052157806336568abe146105405780633746f8581461055f57806337501921146105725780633e3c119b1461059e575f80fd5b80631ca3b0cb116102ca5780632b4c9a20116102a55780632b4c9a20146104915780632c60185c146104a45780632cc884c5146104c35780632e106f21146104e2575f80fd5b80631ca3b0cb146103e55780631e5eb1d01461040e578063248a9ca314610472575f80fd5b806301ffc9a7146103115780630317b9df146103455780630cf8542f146103665780631970e5ea1461037957806319a7359b146103a65780631c4fd41c146103b9575b5f80fd5b34801561031c575f80fd5b5061033061032b366004613e72565b610afe565b60405190151581526020015b60405180910390f35b348015610350575f80fd5b5061036461035f366004613eaf565b610b34565b005b610364610374366004613ef0565b610c0c565b348015610384575f80fd5b50610398610393366004613f0a565b610ce1565b60405190815260200161033c565b6103646103b4366004613f21565b610cec565b3480156103c4575f80fd5b506103d86103d3366004613f0a565b610ea2565b60405161033c9190613f31565b3480156103f0575f80fd5b506103f9610f1d565b6040805192835260208301919091520161033c565b348015610419575f80fd5b50610422610f50565b60405161033c9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0918201516001600160a01b03169181019190915260c00190565b34801561047d575f80fd5b5061039861048c366004613f0a565b611002565b61036461049f366004613ef0565b611022565b3480156104af575f80fd5b506103986104be366004613f57565b6110c8565b3480156104ce575f80fd5b506103986104dd366004613f8b565b6110fb565b6103646104f0366004613fb5565b6112a9565b348015610500575f80fd5b5061051461050f3660046140fa565b61134f565b60405161033c9190614142565b34801561052c575f80fd5b5061036461053b3660046141a1565b6113d0565b34801561054b575f80fd5b5061036461055a3660046141a1565b6113f2565b61036461056d366004613eaf565b61142a565b34801561057d575f80fd5b5061059161058c3660046140fa565b6114d0565b60405161033c91906141cf565b6103f96105ac36600461422b565b611551565b3480156105bc575f80fd5b506103646117c2565b3480156105d0575f80fd5b506103646105df366004614245565b6117f7565b6103646105f236600461426b565b611884565b348015610602575f80fd5b506103986118a3565b348015610616575f80fd5b50610398610625366004613f0a565b6118be565b348015610635575f80fd5b5060408051808201909152600681526576312e352e3160d01b60208201525b60405161033c9190614359565b34801561066c575f80fd5b505f8051602061540e8339815191525460ff16610330565b34801561068f575f80fd5b506106a361069e36600461436b565b6119e9565b60405161033c9190614454565b3480156106bb575f80fd5b506103646106ca366004614506565b611dfb565b3480156106da575f80fd5b506103306106e9366004613f0a565b612080565b3480156106f9575f80fd5b506107a160408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152506040805161010081018252601154815260125460208201526014546001600160a01b03908116928201929092526015548216606082015260165482166080820152601a54821660a0820152601854821660c082015260195490911660e082015290565b604080518251815260208084015190820152828201516001600160a01b039081169282019290925260608084015183169082015260808084015183169082015260a08084015183169082015260c08084015183169082015260e092830151909116918101919091526101000161033c565b34801561081d575f80fd5b5061083161082c366004613f0a565b61208c565b60405161033c9190614570565b348015610849575f80fd5b50610852612152565b60405161033c91905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b3480156108a8575f80fd5b506108b16121f6565b6040805182516001600160a01b031681526020928301516001600160401b0316928101929092520161033c565b6103646108ec36600461457e565b612279565b3480156108fc575f80fd5b5061036461231d565b610364610913366004613ef0565b61234f565b348015610923575f80fd5b506103306109323660046141a1565b6125d3565b348015610942575f80fd5b506103985f81565b61095d6109583660046145df565b612609565b60405161033c919061461d565b348015610975575f80fd5b50610654604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156109a5575f80fd5b506109b96109b4366004613f0a565b61261e565b60405161033c919061467f565b3480156109d1575f80fd5b506103986109e036600461436b565b612704565b3480156109f0575f80fd5b506103306109ff366004613f0a565b612787565b610364610a12366004613eaf565b612792565b348015610a22575f80fd5b50610364610a313660046141a1565b612838565b348015610a41575f80fd5b50610364610a503660046146b3565b612854565b610364610a633660046140fa565b612a07565b610398610a76366004613ef0565b612b39565b348015610a86575f80fd5b50610330610a95366004613f0a565b612c8e565b610364610aa8366004614713565b612d0a565b348015610ab8575f80fd5b50610330610ac736600461436b565b612db5565b348015610ad7575f80fd5b50610398610ae6366004613f8b565b612dfe565b610364610af9366004614713565b612f3d565b5f6001600160e01b03198216637965db0b60e01b1480610b2e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f610b3e81612fe8565b60405163e57980dd60e01b815273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063e57980dd90610b77905f90869060040161472d565b5f6040518083038186803b158015610b8d575f80fd5b505af4158015610b9f573d5f803e3d5ffd5b5050604051634752b3b360e01b815273ba1b87a252dbb06e1bfa367898bbcf78e548f0489250634752b3b39150610bdc905f90869060040161472d565b5f6040518083038186803b158015610bf2575f80fd5b505af4158015610c04573d5f803e3d5ffd5b505050505050565b610c14612ff2565b604051638046123560e01b815273a079ad0c7c2620d368c68efcd57d286c1959c6ee90638046123590610c4d905f9085906004016147f0565b5f6040518083038186803b158015610c63575f80fd5b505af4158015610c75573d5f803e3d5ffd5b50506040516387e2411560e01b815273a079ad0c7c2620d368c68efcd57d286c1959c6ee92506387e241159150610cb2905f9085906004016147f0565b5f6040518083038186803b158015610cc8575f80fd5b505af4158015610cda573d5f803e3d5ffd5b5050505050565b5f610b2e8183613024565b610cf4612ff2565b604051631621030760e01b81527343d1c35eaff6779751cfcf6000c8d7c30dc4655a90631621030790610d2d905f908590600401614804565b5f6040518083038186803b158015610d43575f80fd5b505af4158015610d55573d5f803e3d5ffd5b505060405163b71df57f60e01b81525f92507343d1c35eaff6779751cfcf6000c8d7c30dc4655a915063b71df57f90610d949084908690600401614804565b602060405180830381865af4158015610daf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd39190614876565b90505f19826020013503610e64577315f42baf389652cc0904f6fcc54b907a1147a7ab632d77afb65f610e09602086018661436b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015b5f6040518083038186803b158015610e4d575f80fd5b505af4158015610e5f573d5f803e3d5ffd5b505050505b60405163bfbfe8ab60e01b81525f6004820152602481018290527341c3ce7663a7b06faacf8d62574999f3ca1d753a9063bfbfe8ab90604401610bdc565b6040516303eb153f60e51b81525f60048201819052602482018390529073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90637d62a7e090604401602060405180830381865af4158015610ef9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e919061488d565b6011545f908190610f2f9082906148bf565b610f3b60025f196148d2565b601254610f4891906148bf565b915091509091565b610f8c6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b6040516386617e7760e01b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f048906386617e779060240160c060405180830381865af4158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd91906148f1565b905090565b5f9081525f805160206153ee833981519152602052604090206001015490565b61102a612ff2565b60405163010cc09b60e21b8152730a7cc36c14f766a8561f95a0a5af90f0da46c49a90630433026c90611063905f9085906004016147f0565b5f6040518083038186803b158015611079575f80fd5b505af415801561108b573d5f803e3d5ffd5b505060405163b8359e9760e01b8152730a7cc36c14f766a8561f95a0a5af90f0da46c49a925063b8359e979150610cb2905f9085906004016147f0565b5f815f036110e9576040516301c85f6760e71b815260040160405180910390fd5b6110f45f8484613224565b9392505050565b6001600160a01b0382165f908152600e60209081526040808320815180830183528154815282516001830180546080818802840181019096526060830181815288979496948701948492849184018282801561117457602002820191905f5260205f20905b815481526020019060010190808311611160575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156111ca57602002820191905f5260205f20905b8154815260200190600101908083116111b6575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561122057602002820191905f5260205f20905b81548152602001906001019080831161120c575b50505050508152505081525050905061123881613241565b156112565760405163309f293760e21b815260040160405180910390fd5b60408051606081018252600d546001600160801b03811682526001600160401b03600160801b820481166020840152600160c01b90910416918101919091526112a19082908561325a565b949350505050565b6112b1612ff2565b60405163603ed05b60e01b815273870b4573f23ec6490247a500603238e7754d3ebe9063603ed05b906112ea905f9085906004016149c3565b5f6040518083038186803b158015611300575f80fd5b505af4158015611312573d5f803e3d5ffd5b505060405163153f43e560e31b815273870b4573f23ec6490247a500603238e7754d3ebe925063a9fa1f289150610cb2905f9085906004016149c3565b611357613d1f565b604051631c81982560e11b81527343d1c35eaff6779751cfcf6000c8d7c30dc4655a90633903304a90611390905f908690600401614a2b565b61014060405180830381865af41580156113ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614afe565b6113d982611002565b6113e281612fe8565b6113ec83836132f9565b50505050565b6001600160a01b038116331461141b5760405163334bd91960e11b815260040160405180910390fd5b611425828261339a565b505050565b611432612ff2565b604051634cf319b960e11b81527341b733fe827a5cc663f795e0a0b2100aa7fa6d16906399e633729061146b905f908590600401614c32565b5f6040518083038186803b158015611481575f80fd5b505af4158015611493573d5f803e3d5ffd5b505060405163339bb63160e01b81527341b733fe827a5cc663f795e0a0b2100aa7fa6d16925063339bb6319150610cb2905f908590600401614c32565b6114d8613d65565b60405163301d1d1560e21b81527342e124065d379e6cfc0c8554c73eae439ef8eb859063c074745490611511905f908690600401614a2b565b61012060405180830381865af415801561152d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614c4a565b5f8061155b612ff2565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61158581612fe8565b604051639f53ee0f60e01b81527344a956a465dddf7809b0d99a1b2aa90e4b01971990639f53ee0f906115be905f908890600401614ceb565b5f6040518083038186803b1580156115d4575f80fd5b505af41580156115e6573d5f803e3d5ffd5b505060405163647a4b7560e11b81525f92507344a956a465dddf7809b0d99a1b2aa90e4b019719915063c8f496ea906116259084908990600401614ceb565b606060405180830381865af4158015611640573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116649190614cff565b909550935090507315f42baf389652cc0904f6fcc54b907a1147a7ab632d77afb65f6116966040890160208a0161436b565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b1580156116d9575f80fd5b505af41580156116eb573d5f803e3d5ffd5b5050604051636e6595c160e01b81527344a956a465dddf7809b0d99a1b2aa90e4b0197199250636e6595c1915061172a905f9089908990600401614d2a565b5f6040518083038186803b158015611740575f80fd5b505af4158015611752573d5f803e3d5ffd5b505060405163bfbfe8ab60e01b81525f6004820152602481018490527341c3ce7663a7b06faacf8d62574999f3ca1d753a925063bfbfe8ab91506044015f6040518083038186803b1580156117a5575f80fd5b505af41580156117b7573d5f803e3d5ffd5b505050505050915091565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6117ec81612fe8565b6117f4613413565b50565b7f1eae1854c74a696c6de86fd3c6383d5c1e2c33fbc86e1aa6b6c872d95bd2403861182181612fe8565b600d80546001600160801b038481166001600160c01b031983168117600160801b426001600160401b031602179093556040519116919082907f5dd867e3010e89c86273dfd293660a318f5751183db3eb823fccb822db1798d9905f90a3505050565b61188c613472565b61189582613516565b61189f8282613520565b5050565b5f6118ac6135dc565b505f805160206153ce83398151915290565b604051634c9829bf60e11b81525f600482018190526024820183905290819073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af4158015611917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193b9190614876565b6040805160808101825282546001600160a01b03168152600183015460208201526002830154818301526003909201546060830152516345ffd36d60e01b815290915073feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc906345ffd36d906119aa905f908590600401614d4c565b602060405180830381865af41580156119c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f49190614876565b6119f1613d9c565b604080516001600160a01b0384165f908152600e60209081529083902061016083018452805461012084019081528451600183018054608095810283018601909752606082018781529596879660a088019687959487946101408b01949193909284928491840182828015611a8357602002820191905f5260205f20905b815481526020019060010190808311611a6f575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611ad957602002820191905f5260205f20905b815481526020019060010190808311611ac5575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611b2f57602002820191905f5260205f20905b815481526020019060010190808311611b1b575b505050505081525050815250508152602001600482016040518060400160405290815f8201548152602001600182016040518060600160405290815f8201805480602002602001604051908101604052809291908181526020018280548015611bb557602002820191905f5260205f20905b815481526020019060010190808311611ba1575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c0b57602002820191905f5260205f20905b815481526020019060010190808311611bf7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c6157602002820191905f5260205f20905b815481526020019060010190808311611c4d575b505050919092525050509052508152600882015460208083019190915260099092015460ff1615156040918201529183526001600160a01b0386811691840182905260165483516370a0823160e01b815260048101939093529390920192909116906370a0823190602401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190614876565b8152601a546040516370a0823160e01b81526001600160a01b038681166004830152602090930192909116906370a0823190602401602060405180830381865afa158015611d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7f9190614876565b81526018546040516370a0823160e01b81526001600160a01b038681166004830152602090930192909116906370a0823190602401602060405180830381865afa158015611dcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df39190614876565b905292915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611e3f5750825b90505f826001600160401b03166001148015611e5a5750303b155b905081158015611e68575080155b15611e865760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611eb057845460ff60401b1916600160401b1785555b6040516369777eb960e01b815273e38a640174c8ff20a89a272967f960538be06b44906369777eb990611ef1905f908e908e908e908e908e90600401614e9d565b5f6040518083038186803b158015611f07575f80fd5b505af4158015611f19573d5f803e3d5ffd5b50505050611f25613625565b611f2d61362d565b611f35613625565b604051632ffdac7160e21b815273e38a640174c8ff20a89a272967f960538be06b449063bff6b1c490611f74905f908d908d908d908d90600401614f27565b5f6040518083038186803b158015611f8a575f80fd5b505af4158015611f9c573d5f803e3d5ffd5b50505050611fac5f801b8b6132f9565b50611fd77f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8b6132f9565b506120027ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab8b6132f9565b5061202d7f1eae1854c74a696c6de86fd3c6383d5c1e2c33fbc86e1aa6b6c872d95bd240388b6132f9565b50831561207457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6011545f908210610b2e565b612094613dd6565b604051633978289f60e01b81525f60048201526024810183905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90633978289f90604401602060405180830381865af41580156120e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210c9190614876565b6040805160808101825282546001600160a01b0381168252600160a01b900460ff1615156020820152600183015491810191909152600290910154606082015292915050565b6121856040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b604051636e9bc7eb60e11b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063dd378fd69060240160c060405180830381865af41580156121d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190614f96565b604080518082019091525f8082526020820152604051631ae5e80160e31b81525f600482015273ba1b87a252dbb06e1bfa367898bbcf78e548f0489063d72f4008906024016040805180830381865af4158015612255573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190614fee565b612281612ff2565b6040516210aa0b60e31b8152739f239921a3076cc9a0d24b28adebd52edd6895a29062855058906122b8905f90859060040161504a565b5f6040518083038186803b1580156122ce575f80fd5b505af41580156122e0573d5f803e3d5ffd5b50506040516364140a8360e01b8152739f239921a3076cc9a0d24b28adebd52edd6895a292506364140a839150610cb2905f90859060040161504a565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61234781612fe8565b6117f461363d565b612357612ff2565b604051634ec6ce5b60e11b81525f60048201819052336024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401602060405180830381865af41580156123ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d19190615082565b604051634bc1120160e01b81529091507382b512fac9c21356bf5a050c710d4de7b7ff6eda90634bc112019061240d905f90869060040161509d565b5f6040518083038186803b158015612423575f80fd5b505af4158015612435573d5f803e3d5ffd5b50506040516332f4053b60e01b81527382b512fac9c21356bf5a050c710d4de7b7ff6eda92506332f4053b9150612472905f90869060040161509d565b5f6040518083038186803b158015612488575f80fd5b505af415801561249a573d5f803e3d5ffd5b5050604051634ec6ce5b60e11b81525f6004820181905233602483015292507315f42baf389652cc0904f6fcc54b907a1147a7ab9150639d8d9cb690604401602060405180830381865af41580156124f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125189190615082565b9050811580156125255750805b156114255760405163046dbd1360e11b81525f60048201523360248201819052907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015612580573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a49190614876565b60405163092ceea960e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b5f9182525f805160206153ee833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060612613612ff2565b6110f45f8484613685565b61264e60405180608001604052805f6001600160a01b031681526020015f81526020015f81526020015f81525090565b604051634c9829bf60e11b81525f60048201526024810183905273feb81e6c614fb7d53b2f9a1ef67459b55b3d84dc90639930537e90604401602060405180830381865af41580156126a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c69190614876565b6040805160808101825282546001600160a01b0316815260018301546020820152600283015491810191909152600390910154606082015292915050565b60405163046dbd1360e11b81525f600482018190526001600160a01b0383166024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab906308db7a2690604401602060405180830381865af4158015612763573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190614876565b5f610b2e81836139ec565b61279a612ff2565b6040516329de607960e01b8152732ffe1bf4e74f15cefe68f13e2a40a9fb041bef29906329de6079906127d3905f908590600401614c32565b5f6040518083038186803b1580156127e9575f80fd5b505af41580156127fb573d5f803e3d5ffd5b50506040516309f18b1960e11b8152732ffe1bf4e74f15cefe68f13e2a40a9fb041bef2992506313e316329150610cb2905f908590600401614c32565b61284182611002565b61284a81612fe8565b6113ec838361339a565b5f61285e81612fe8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460969190600160401b900460ff16806128a7575080546001600160401b03808416911610155b156128c55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155604051636ab187cd60e11b815273e38a640174c8ff20a89a272967f960538be06b449063d5630f9a90612923905f908a908a908a906004016150c5565b5f6040518083038186803b158015612939575f80fd5b505af415801561294b573d5f803e3d5ffd5b5050604051633664147f60e01b815273e38a640174c8ff20a89a272967f960538be06b449250633664147f915061298c905f908a908a908a906004016150c5565b5f6040518083038186803b1580156129a2575f80fd5b505af41580156129b4573d5f803e3d5ffd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b612a0f612ff2565b604051630dd8fb6560e21b81527342e124065d379e6cfc0c8554c73eae439ef8eb8590633763ed9490612a48905f908590600401614a2b565b5f6040518083038186803b158015612a5e575f80fd5b505af4158015612a70573d5f803e3d5ffd5b505060405163d73654eb60e01b81525f92507342e124065d379e6cfc0c8554c73eae439ef8eb85915063d73654eb90612aaf9084908690600401614a2b565b602060405180830381865af4158015612aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aee9190614876565b90505f19826020015103610e64576040516316bbd7db60e11b81525f60048201523360248201527315f42baf389652cc0904f6fcc54b907a1147a7ab90632d77afb690604401610e37565b5f612b42612ff2565b6040516320b5435f60e11b815273b5a851ebd5d501607af946d36496ebce3eb9b1d49063416a86be90612b7b905f90869060040161509d565b5f6040518083038186803b158015612b91575f80fd5b505af4158015612ba3573d5f803e3d5ffd5b5050604051630d0699cb60e21b815273b5a851ebd5d501607af946d36496ebce3eb9b1d4925063341a672c9150612be0905f90869060040161509d565b602060405180830381865af4158015612bfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c1f9190614876565b60405163489d188160e01b815290915073b5a851ebd5d501607af946d36496ebce3eb9b1d49063489d188190612c5d905f908690869060040161512a565b5f6040518083038186803b158015612c73575f80fd5b505af4158015612c85573d5f803e3d5ffd5b50505050919050565b604051631928c8e960e11b81525f6004820181905260248201839052907315f42baf389652cc0904f6fcc54b907a1147a7ab9063325191d2906044015b602060405180830381865af4158015612ce6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e9190615082565b612d12612ff2565b604051635792057f60e11b81525f600482015281356024820152731658c459ee72984769438696c82e419c137484fe9063af240afe906044015f6040518083038186803b158015612d61575f80fd5b505af4158015612d73573d5f803e3d5ffd5b50506040516320e9b9f960e11b81525f600482015283356024820152731658c459ee72984769438696c82e419c137484fe92506341d373f29150604401610cb2565b604051634ec6ce5b60e11b81525f600482018190526001600160a01b0383166024830152907315f42baf389652cc0904f6fcc54b907a1147a7ab90639d8d9cb690604401612ccb565b6001600160a01b0382165f908152600e602090815260408083208151808301835260048201805482528351600590930180546080818802860181019096526060850181815288979496939594870194938492849184018282801561117457602002820191905f5260205f20908154815260200190600101908083116111605750505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156111ca57602002820191905f5260205f20908154815260200190600101908083116111b657505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561122057602002820191905f5260205f209081548152602001906001019080831161120c5750505050508152505081525050905061123881613241565b612f45612ff2565b6040516306241a0160e51b81525f6004820152813560248201527349d3e25408fc670db9a3e83ad3ae92c85235a9579063c4834020906044015f6040518083038186803b158015612f94575f80fd5b505af4158015612fa6573d5f803e3d5ffd5b5050604051632981ae3960e21b81525f6004820152833560248201527349d3e25408fc670db9a3e83ad3ae92c85235a957925063a606b8e49150604401610cb2565b6117f48133613a0f565b5f8051602061540e8339815191525460ff16156130225760405163d93c066560e01b815260040160405180910390fd5b565b5f6110f483600c015f015f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a09190614876565b6130ab90600a615240565b6130b5908461524b565b60148501546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa1580156130ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131239190615262565b61312e90600a615282565b60158601546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa158015613178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061319c9190615262565b6131a790600a615282565b600c87015460408051634c6afee560e11b815290516001600160a01b03909216916398d5fdca916004808201926020929091908290030181865afa1580156131f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132159190614876565b61321f919061524b565b613a48565b5f6112a1836132338685613a54565b670de0b6b3a7640000613a48565b80515f90158015610b2e5750610b2e8260200151613a67565b5f815f0361327b576040516301c85f6760e71b815260040160405180910390fd5b60208401516040516315c6891560e11b815273ed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d91632b8d122a916132ba919087908790600401615290565b602060405180830381865af41580156132d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a19190614876565b5f5f805160206153ee83398151915261331284846125d3565b613391575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556133473390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b2e565b5f915050610b2e565b5f5f805160206153ee8339815191526133b384846125d3565b15613391575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b2e565b61341b613a8d565b5f8051602061540e833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806134f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166134ec5f805160206153ce833981519152546001600160a01b031690565b6001600160a01b031614155b156130225760405163703e46dd60e11b815260040160405180910390fd5b5f61189f81612fe8565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561357a575060408051601f3d908101601f1916820190925261357791810190614876565b60015b6135a257604051634c9c8ce360e01b81526001600160a01b03831660048201526024016125ca565b5f805160206153ce83398151915281146135d257604051632a87526960e21b8152600481018290526024016125ca565b6114258383613abc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146130225760405163703e46dd60e11b815260040160405180910390fd5b613022613b11565b613635613b11565b613022613b5a565b613645612ff2565b5f8051602061540e833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613454565b60198301805460ff60a01b1916600160a01b179055601a830154604080516318160ddd60e01b815290516060925f926001600160a01b03909116916318160ddd916004808201926020929091908290030181865afa1580156136e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370d9190614876565b90505f85600e01600a015f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137899190614876565b9050836001600160401b038111156137a3576137a3613feb565b6040519080825280602002602001820160405280156137d657816020015b60608152602001906001900390816137c15790505b5092505f5b8481101561386957613844308787848181106137f9576137f961535c565b905060200281019061380b9190615370565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250613b7a92505050565b8482815181106138565761385661535c565b60209081029190910101526001016137db565b50601a860154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156138b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138d79190614876565b90505f87600e01600a015f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561392f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139539190614876565b60405163111a6a5d60e31b8152600481018a9052602481018690526044810185905260648101849052608481018290529091507341c3ce7663a7b06faacf8d62574999f3ca1d753a906388d352e89060a4015f6040518083038186803b1580156139bb575f80fd5b505af41580156139cd573d5f803e3d5ffd5b5050506019909801805460ff60a01b1916905550929695505050505050565b5f6139f960025f196148d2565b82101580156110f4575050601291909101541190565b613a1982826125d3565b61189f5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016125ca565b5f6112a1848484613bec565b81545f906110f490836301e13380613a48565b8051515f90158015613a7c5750602082015151155b8015610b2e57505060400151511590565b5f8051602061540e8339815191525460ff1661302257604051638dfc202b60e01b815260040160405180910390fd5b613ac582613c18565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613b09576114258282613b7a565b61189f613c7b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661302257604051631afcd79f60e31b815260040160405180910390fd5b613b62613b11565b5f8051602061540e833981519152805460ff19169055565b60605f80846001600160a01b031684604051613b9691906153b2565b5f60405180830381855af49150503d805f8114613bce576040519150601f19603f3d011682016040523d82523d5f602084013e613bd3565b606091505b5091509150613be3858383613c9a565b95945050505050565b5f825f190484118302158202613c095763ad251c275f526004601cfd5b50910281810615159190040190565b806001600160a01b03163b5f03613c4d57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016125ca565b5f805160206153ce83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b34156130225760405163b398979f60e01b815260040160405180910390fd5b606082613caf57613caa82613cf6565b6110f4565b8151158015613cc657506001600160a01b0384163b155b15613cef57604051639996b31560e01b81526001600160a01b03851660048201526024016125ca565b50806110f4565b805115613d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e00160405280613d32613dd6565b81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280613d78613dd6565b81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a00160405280613daf613e05565b81526020015f6001600160a01b031681526020015f81526020015f81526020015f81525090565b60405180608001604052805f6001600160a01b031681526020015f151581526020015f81526020015f81525090565b6040518060800160405280613e18613e38565b8152602001613e25613e38565b81525f6020820181905260409091015290565b60405180604001604052805f8152602001613e6d60405180606001604052806060815260200160608152602001606081525090565b905290565b5f60208284031215613e82575f80fd5b81356001600160e01b0319811681146110f4575f80fd5b5f60408284031215613ea9575f80fd5b50919050565b5f60208284031215613ebf575f80fd5b81356001600160401b03811115613ed4575f80fd5b6112a184828501613e99565b5f60608284031215613ea9575f80fd5b5f60608284031215613f00575f80fd5b6110f48383613ee0565b5f60208284031215613f1a575f80fd5b5035919050565b5f60e08284031215613ea9575f80fd5b6020810160038310613f5157634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8060408385031215613f68575f80fd5b50508035926020909101359150565b6001600160a01b03811681146117f4575f80fd5b5f8060408385031215613f9c575f80fd5b8235613fa781613f77565b946020939093013593505050565b5f60208284031215613fc5575f80fd5b81356001600160401b03811115613fda575f80fd5b8201608081850312156110f4575f80fd5b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561402157614021613feb565b60405290565b60405160c081016001600160401b038111828210171561402157614021613feb565b604051601f8201601f191681016001600160401b038111828210171561407157614071613feb565b604052919050565b80151581146117f4575f80fd5b5f60e08284031215614096575f80fd5b61409e613fff565b905081356140ab81613f77565b808252506020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c08201356140ef81614079565b60c082015292915050565b5f60e0828403121561410a575f80fd5b6110f48383614086565b80516001600160a01b0316825260208082015115159083015260408082015190830152606090810151910152565b5f61014082019050614155828451614114565b60018060a01b036020840151166080830152604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015260c083015161012083015292915050565b5f80604083850312156141b2575f80fd5b8235915060208301356141c481613f77565b809150509250929050565b5f610120820190506141e2828451614114565b60208301516080830152604083015160a0830152606083015160c0830152608083015160e083015260a083015161010083015292915050565b5f60a08284031215613ea9575f80fd5b5f60a0828403121561423b575f80fd5b6110f4838361421b565b5f60208284031215614255575f80fd5b81356001600160801b03811681146110f4575f80fd5b5f806040838503121561427c575f80fd5b823561428781613f77565b91506020838101356001600160401b03808211156142a3575f80fd5b818601915086601f8301126142b6575f80fd5b8135818111156142c8576142c8613feb565b6142da601f8201601f19168501614049565b915080825287848285010111156142ef575f80fd5b80848401858401375f848284010152508093505050509250929050565b5f5b8381101561432657818101518382015260200161430e565b50505f910152565b5f815180845261434581602086016020860161430c565b601f01601f19169290920160200192915050565b602081525f6110f4602083018461432e565b5f6020828403121561437b575f80fd5b81356110f481613f77565b5f815180845260208085019450602084015f5b838110156143b557815187529582019590820190600101614399565b509495945050505050565b805182525f6020808301516040828601528051606060408701526143e760a0870182614386565b83830151603f19888303810160608a0152815180845291860193505f929091908601905b8084101561442b578451825293860193600193909301929086019061440b565b5060408501519550818982030160808a01526144478187614386565b9998505050505050505050565b602081525f825160a060208401528051608060c08501526144796101408501826143c0565b9050602082015160bf198583030160e086015261449682826143c0565b915050604082015161010085015260608201511515610120850152602085015191506144cd60408501836001600160a01b03169052565b6040850151606085015260608501516080850152608085015160a0850152809250505092915050565b5f60c08284031215613ea9575f80fd5b5f805f805f610280868803121561451b575f80fd5b853561452681613f77565b945061453587602088016144f6565b93506145448760e088016144f6565b9250614554876101a08801613e99565b9150614564876101e0880161421b565b90509295509295909350565b60808101610b2e8284614114565b5f6040828403121561458e575f80fd5b6110f48383613e99565b5f8083601f8401126145a8575f80fd5b5081356001600160401b038111156145be575f80fd5b6020830191508360208260051b85010111156145d8575f80fd5b9250929050565b5f80602083850312156145f0575f80fd5b82356001600160401b03811115614605575f80fd5b61461185828601614598565b90969095509350505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561467257603f1988860301845261466085835161432e565b94509285019290850190600101614644565b5092979650505050505050565b81516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260808101610b2e565b5f805f604084860312156146c5575f80fd5b83356146d081613f77565b925060208401356001600160401b038111156146ea575f80fd5b6146f686828701614598565b9497909650939450505050565b5f60208284031215613ea9575f80fd5b5f60208284031215614723575f80fd5b6110f48383614703565b828152604060208201525f8235601e1984360301811261474b575f80fd5b83016020810190356001600160401b03811115614766575f80fd5b803603821315614774575f80fd5b604080850152806080850152808260a08601375f60a082860101526020850135606085015260a0601f19601f830116850101925050509392505050565b80356147bc81613f77565b6001600160a01b039081168352602082810135908401526040820135906147e282613f77565b808216604085015250505050565b828152608081016110f460208301846147b1565b8281526101008101823561481781613f77565b60018060a01b038116602084015250602083013560408301526040830135606083015260608301356080830152608083013560a083015260a083013560c083015260c083013561486681614079565b80151560e0840152509392505050565b5f60208284031215614886575f80fd5b5051919050565b5f6020828403121561489d575f80fd5b8151600381106110f4575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610b2e57610b2e6148ab565b5f826148ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60c08284031215614901575f80fd5b614909614027565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015161494381613f77565b60a08201529392505050565b5f808335601e19843603018112614964575f80fd5b83016020810192503590506001600160401b03811115614982575f80fd5b8060051b36038213156145d8575f80fd5b8183525f6001600160fb1b038311156149aa575f80fd5b8260051b80836020870137939093016020019392505050565b82815260406020820152813560408201525f60208301356149e381614079565b1515606083015260408301356149f881614079565b15156080830152614a0c606084018461494f565b608060a0850152614a2160c085018284614993565b9695505050505050565b82815261010081016110f4602083018480516001600160a01b031682526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0818101519083015260c0908101511515910152565b5f60808284031215614a97575f80fd5b604051608081018181106001600160401b0382111715614ab957614ab9613feb565b80604052508091508251614acc81613f77565b81526020830151614adc81614079565b8060208301525060408301516040820152606083015160608201525092915050565b5f6101408284031215614b0f575f80fd5b614b17613fff565b614b218484614a87565b81526080830151614b3181613f77565b8060208301525060a0830151604082015260c0830151606082015260e0830151608082015261010083015160a082015261012083015160c08201528091505092915050565b803582525f602080830135605e19843603018112614b92575f80fd5b6040858301528301614ba4818061494f565b60606040880152614bb960a088018284614993565b915050614bc88383018361494f565b603f19888403810160608a015281845291925f929086015b82841015614bfe578435815293860193600193909301928601614be0565b614c0b604087018761494f565b97509550818a82030160808b0152614c24818888614993565b9a9950505050505050505050565b828152604060208201525f6112a16040830184614b76565b5f6101208284031215614c5b575f80fd5b614c63614027565b614c6d8484614a87565b81526080830151602082015260a0830151604082015260c0830151606082015260e0830151608082015261010083015160a08201528091505092915050565b803582526020810135614cbe81613f77565b6001600160a01b031660208301526040818101359083015260608082013590830152608090810135910152565b82815260c081016110f46020830184614cac565b5f805f60608486031215614d11575f80fd5b8351925060208401519150604084015190509250925092565b83815260e08101614d3e6020830185614cac565b8260c0830152949350505050565b82815260a081016110f4602083018480516001600160a01b031682526020808201519083015260408082015190830152606090810151910152565b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a0810135614dc181613f77565b6001600160a01b031660a0929092019190915250565b6001600160401b03811681146117f4575f80fd5b8035614df681613f77565b6001600160a01b031682526020810135614e0f81614dd7565b6001600160401b0381166020840152505050565b8035614e2e81613f77565b6001600160a01b039081168352602082013590614e4a82613f77565b9081166020840152604082013590614e6182613f77565b9081166040840152606082013590614e7882613f77565b9081166060840152608082013590614e8f82613f77565b808216608085015250505050565b8681526001600160a01b03861660208201526102a08101614ec16040830187614d87565b8435610100830152602085013561012083015260408501356101408301526060850135610160830152608085013561018083015260a08501356101a0830152614f0e6101c0830185614deb565b614f1c610200830184614e23565b979650505050505050565b8581526102808101614f3c6020830187614d87565b843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a0850135610180830152614f886101a0830185614deb565b614a216101e0830184614e23565b5f60c08284031215614fa6575f80fd5b614fae614027565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b5f60408284031215614ffe575f80fd5b604051604081018181106001600160401b038211171561502057615020613feb565b604052825161502e81613f77565b8152602083015161503e81614dd7565b60208201529392505050565b5f60608201905083825282356020830152602083013561506981613f77565b6001600160a01b03166040929092019190915292915050565b5f60208284031215615092575f80fd5b81516110f481614079565b828152608081016110f460208301848035825260208082013590830152604090810135910152565b8481526001600160a01b0384811660208084019190915260606040840181905283018490525f9185919060808501845b8781101561511c57843561510881613f77565b8316825293830193908301906001016150f5565b509998505050505050505050565b83815260a0810161515260208301858035825260208082013590830152604090810135910152565b826080830152949350505050565b600181815b8085111561519a57815f1904821115615180576151806148ab565b8085161561518d57918102915b93841c9390800290615165565b509250929050565b5f826151b057506001610b2e565b816151bc57505f610b2e565b81600181146151d257600281146151dc576151f8565b6001915050610b2e565b60ff8411156151ed576151ed6148ab565b50506001821b610b2e565b5060208310610133831016604e8410600b841016171561521b575081810a610b2e565b6152258383615160565b805f1904821115615238576152386148ab565b029392505050565b5f6110f483836151a2565b8082028115828204841417610b2e57610b2e6148ab565b5f60208284031215615272575f80fd5b815160ff811681146110f4575f80fd5b5f6110f460ff8416836151a2565b60a081525f8451606060a08401526152ac610100840182614386565b602087810151609f19868403810160c08801528151808552918301945091925f9291908401905b808410156152f357855182529484019460019390930192908401906152d3565b5060408a01519450818782030160e088015261530f8186614386565b955050505061534c8185018780516001600160801b031682526020808201516001600160401b039081169184019190915260409182015116910152565b5050826080830152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e19843603018112615385575f80fd5b8301803591506001600160401b0382111561539e575f80fd5b6020019150368190038213156145d8575f80fd5b5f82516153c381846020870161430c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220f690191a6755c4a508fe256dbe11334c38dadf431860e56a47f731922ff762da64736f6c6343000817003360806040526040516103f03803806103f08339810160408190526100229161025e565b61002c8282610033565b5050610341565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516101289190610326565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025657818101518382015260200161023e565b50505f910152565b5f806040838503121561026f575f80fd5b82516001600160a01b0381168114610285575f80fd5b60208401519092506001600160401b03808211156102a1575f80fd5b818501915085601f8301126102b4575f80fd5b8151818111156102c6576102c6610228565b604051601f8201601f19908116603f011681019083821181831017156102ee576102ee610228565b81604052828152886020848701011115610306575f80fd5b61031783602083016020880161023c565b80955050505050509250929050565b5f825161033781846020870161023c565b9190910192915050565b60a38061034d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220ef658173ec6442fec70f959a724d6a3e10076c082fad49fbe00ede42118994d064736f6c63430008170033a264697066735822122015f8640e98224d5be3c07ebf635c3e0b3a91c051946ab79ef23aa1be03b3364464736f6c63430008170033", + "nonce": "0x91", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionType": "CREATE", + "contractName": "SizeFactory", + "contractAddress": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "gas": "0x2d7466", + "value": "0x0", + "input": "0x60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516127f7620001005f395f818161163d0152818161166601526117aa01526127f75ff3fe6080604052600436106101f1575f3560e01c806389fd57b111610108578063d152e2361161009d578063ec2c90161161006d578063ec2c90161461055d578063ef09657214610571578063f2fde38b14610590578063f91d443f146105af578063fceb0024146105ce575f80fd5b8063d152e236146104ec578063db9132361461050b578063e30c39781461052a578063eb44fdd31461053e575f80fd5b8063ad3cb1cc116100d8578063ad3cb1cc1461046a578063b4208ef21461049a578063b7621145146104ae578063c4d66de8146104cd575f80fd5b806389fd57b1146104045780638da5cb5b146104185780638e6ee8e51461042c57806393e306331461044b575f80fd5b806357a94beb116101895780636ca42ae3116101595780636ca42ae3146103885780636ec934da146103a9578063715018a6146103c85780637643d7ec146103dc57806379ba5097146103f0575f80fd5b806357a94beb146103155780635a58a812146103345780635dbd6102146103485780636c59803b14610367575f80fd5b806327fa35c3116101c457806327fa35c3146102a15780634f1ef286146102b557806352d1902d146102ca57806354fd4d50146102de575f80fd5b8063025e0812146101f557806307d4e090146102295780630bb6842d1461026057806317180f341461027f575b5f80fd5b348015610200575f80fd5b5061021461020f366004611e5f565b6105ed565b60405190151581526020015b60405180910390f35b348015610234575f80fd5b50610248610243366004611e8a565b610605565b6040516001600160a01b039091168152602001610220565b34801561026b575f80fd5b5061021461027a366004611e5f565b6106a7565b34801561028a575f80fd5b506102936106b9565b604051908152602001610220565b3480156102ac575f80fd5b506102936106c9565b6102c86102c3366004611f87565b6106d3565b005b3480156102d5575f80fd5b506102936106f2565b3480156102e9575f80fd5b5060408051808201909152600681526576312e352e3160d01b60208201525b6040516102209190612060565b348015610320575f80fd5b5061021461032f366004611e5f565b61070d565b34801561033f575f80fd5b50610293610719565b348015610353575f80fd5b50610214610362366004611e5f565b610724565b348015610372575f80fd5b5061037b61079f565b6040516102209190612072565b348015610393575f80fd5b5061039c61089d565b60405161022091906120d4565b3480156103b4575f80fd5b506102146103c3366004611e5f565b610934565b3480156103d3575f80fd5b506102c861093f565b3480156103e7575f80fd5b5061037b610952565b3480156103fb575f80fd5b506102c8610c7c565b34801561040f575f80fd5b5061039c610cc9565b348015610423575f80fd5b50610248610d60565b348015610437575f80fd5b50610248610446366004612120565b610d94565b348015610456575f80fd5b50610214610465366004611e5f565b610e47565b348015610475575f80fd5b50610308604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156104a5575f80fd5b5061037b610e59565b3480156104b9575f80fd5b506102146104c8366004611e5f565b611093565b3480156104d8575f80fd5b506102c86104e7366004611e5f565b61109f565b3480156104f7575f80fd5b5061024861050636600461216a565b6111bb565b348015610516575f80fd5b50610214610525366004611e5f565b61124b565b348015610535575f80fd5b506102486112c5565b348015610549575f80fd5b50610248610558366004612223565b6112ed565b348015610568575f80fd5b5061039c6112f8565b34801561057c575f80fd5b5061024861058b366004612223565b61138d565b34801561059b575f80fd5b506102c86105aa366004611e5f565b611399565b3480156105ba575f80fd5b506102486105c9366004612223565b61141e565b3480156105d9575f80fd5b506102146105e8366004611e5f565b61142a565b5f6105f66114a5565b6105ff826114d7565b92915050565b5f61060e6114a5565b73ea61a6e3fe0c147a0989d4a526f5ccae940c765663310657f9610630610d60565b878787876040518663ffffffff1660e01b81526004016106549594939291906122f0565b602060405180830381865af415801561066f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069391906123ab565b905061069e81611548565b50949350505050565b5f6106b06114a5565b6105ff826115b8565b5f6106c46002611629565b905090565b5f6106c45f611629565b6106db611632565b6106e4826116d6565b6106ee82826116de565b5050565b5f6106fb61179f565b505f805160206127a283398151915290565b5f6105ff6002836117e8565b5f6106c46004611629565b5f61072d6114a5565b6001600160a01b0382166107545760405163de0ce17d60e01b815260040160405180910390fd5b61075f60048361180c565b9050801515826001600160a01b03167f8d73d27027613eea51b73041fbb3e53c27e7fed218a338331989912b6c4b4be860405160405180910390a3919050565b60606107ab6004611629565b6001600160401b038111156107c2576107c2611ef4565b6040519080825280602002602001820160405280156107f557816020015b60608152602001906001900390816107e05790505b5090505f5b8151811015610899575f61080f600483611820565b9050806001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561084c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261087391908101906123c6565b8383815181106108855761088561242e565b6020908102919091010152506001016107fa565b5090565b60606108a96002611629565b6001600160401b038111156108c0576108c0611ef4565b6040519080825280602002602001820160405280156108e9578160200160208202803683370190505b5090505f5b815181101561089957610902600282611820565b8282815181106109145761091461242e565b6001600160a01b03909216602092830291909101909101526001016108ee565b5f6105ff81836117e8565b6109476114a5565b6109505f61182b565b565b606061095d5f611629565b6001600160401b0381111561097457610974611ef4565b6040519080825280602002602001820160405280156109a757816020015b60608152602001906001900390816109925790505b5090505f5b8151811015610899575f6109c08183611820565b90505f610a3a6064836001600160a01b0316637c90a6ca6040518163ffffffff1660e01b815260040160c060405180830381865afa158015610a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a289190612442565b60200151670de0b6b3a7640000611863565b9050816001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040161010060405180830381865afa158015610a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9d91906124c4565b604001516001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610adb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0291908101906123c6565b826001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040161010060405180830381865afa158015610b3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6391906124c4565b606001516001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ba1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bc891908101906123c6565b610bd183611877565b846001600160a01b03166354fd4d506040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c0c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c3391908101906123c6565b604051602001610c46949392919061257d565b604051602081830303815290604052848481518110610c6757610c6761242e565b602090810291909101015250506001016109ac565b3380610c866112c5565b6001600160a01b031614610cbd5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610cc68161182b565b50565b6060610cd56004611629565b6001600160401b03811115610cec57610cec611ef4565b604051908082528060200260200182016040528015610d15578160200160208202803683370190505b5090505f5b815181101561089957610d2e600482611820565b828281518110610d4057610d4061242e565b6001600160a01b0390921660209283029190910190910152600101610d1a565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b5f610d9d6114a5565b73dc8504a256093b3ea224415afed3c6f401eabba1634299eb2d610dbf610d60565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015281871660248201529085166044820152606401602060405180830381865af4158015610e11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3591906123ab565b9050610e40816114d7565b5092915050565b5f610e506114a5565b6105ff82611548565b6060610e656002611629565b6001600160401b03811115610e7c57610e7c611ef4565b604051908082528060200260200182016040528015610eaf57816020015b6060815260200190600190039081610e9a5790505b5090505f5b8151811015610899575f610ec9600283611820565b9050806001600160a01b0316635001f3b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2b91906123ab565b6001600160a01b0316637284e4166040518163ffffffff1660e01b81526004015f60405180830381865afa158015610f65573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f8c91908101906123c6565b816001600160a01b031663999b93af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec91906123ab565b6001600160a01b0316637284e4166040518163ffffffff1660e01b81526004015f60405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261104d91908101906123c6565b60405160200161105e929190612609565b60405160208183030381529060405283838151811061107f5761107f61242e565b602090810291909101015250600101610eb4565b5f6105ff6004836117e8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110e35750825b90505f826001600160401b031660011480156110fe5750303b155b90508115801561110c575080155b1561112a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561115457845460ff60401b1916600160401b1785555b61115d86611906565b611165611917565b61116d611917565b83156111b357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f6111c46114a5565b60405163145b6cb960e11b8152735d4b12e547b462a16b2afd3ca821c77da986df97906328b6d972906111fb90859060040161265e565b602060405180830381865af4158015611216573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123a91906123ab565b9050611245816115b8565b50919050565b5f6112546114a5565b6001600160a01b03821661127b5760405163de0ce17d60e01b815260040160405180910390fd5b6112855f8361180c565b9050801515826001600160a01b03167f0e4a8f27c6352e6fe6149b046737df5653aa907ab5f60a2e6f44b9fbe74d36fa60405160405180910390a3919050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610d84565b5f6105ff8183611820565b60606113035f611629565b6001600160401b0381111561131a5761131a611ef4565b604051908082528060200260200182016040528015611343578160200160208202803683370190505b5090505f5b81518110156108995761135b5f82611820565b82828151811061136d5761136d61242e565b6001600160a01b0390921660209283029190910190910152600101611348565b5f6105ff600483611820565b6113a16114a5565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556113e5610d60565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f6105ff600283611820565b5f6114336114a5565b6001600160a01b03821661145a5760405163de0ce17d60e01b815260040160405180910390fd5b61146560028361180c565b9050801515826001600160a01b03167f4192bb627423ed9ad89a0007e7b220e804aeac006b70f9f34283ad4f475b156e60405160405180910390a3919050565b336114ae610d60565b6001600160a01b0316146109505760405163118cdaa760e01b8152336004820152602401610cb4565b5f6001600160a01b0382166114ff5760405163de0ce17d60e01b815260040160405180910390fd5b61150a60048361191f565b6040519015915081906001600160a01b038416907f8728dad4104402ec48bfe4e6dbda57ccb04fde1b4c7d2781716125a6203d717d905f90a3919050565b5f6001600160a01b0382166115705760405163de0ce17d60e01b815260040160405180910390fd5b61157a5f8361191f565b6040519015915081906001600160a01b038416907f31b5222362b7d52d7e24d96723c4b09a0043f8b859a4eaeefd5c69c6c8ca5877905f90a3919050565b5f6001600160a01b0382166115e05760405163de0ce17d60e01b815260040160405180910390fd5b6115eb60028361191f565b6040519015915081906001600160a01b038416907f8ed7f0e9b2ee05a88d7dead0712832e6b8c32512e38cef5ee45c4f1816af204c905f90a3919050565b5f6105ff825490565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806116b857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116ac5f805160206127a2833981519152546001600160a01b031690565b6001600160a01b031614155b156109505760405163703e46dd60e11b815260040160405180910390fd5b610cc66114a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611738575060408051601f3d908101601f191682019092526117359181019061273c565b60015b61176057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610cb4565b5f805160206127a2833981519152811461179057604051632a87526960e21b815260048101829052602401610cb4565b61179a8383611933565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109505760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b5f611805836001600160a01b038416611988565b5f6118058383611a6b565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556106ee82611a91565b5f61186f848484611b01565b949350505050565b60605f61188383611b25565b60010190505f816001600160401b038111156118a1576118a1611ef4565b6040519080825280601f01601f1916602001820160405280156118cb576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846118d557509392505050565b61190e611bfc565b610cc681611c45565b610950611bfc565b5f611805836001600160a01b038416611c76565b61193c82611cc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156119805761179a8282611d25565b6106ee611d97565b5f8181526001830160205260408120548015611a62575f6119aa600183612753565b85549091505f906119bd90600190612753565b9050808214611a1c575f865f0182815481106119db576119db61242e565b905f5260205f200154905080875f0184815481106119fb576119fb61242e565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611a2d57611a2d612772565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ff565b5f9150506105ff565b5f825f018281548110611a8057611a8061242e565b905f5260205f200154905092915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f825f190484118302158202611b1e5763ad251c275f526004601cfd5b5091020490565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b635772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b8f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611bad57662386f26fc10000830492506010015b6305f5e1008310611bc5576305f5e100830492506008015b6127108310611bd957612710830492506004015b60648310611beb576064830492506002015b600a83106105ff5760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661095057604051631afcd79f60e31b815260040160405180910390fd5b611c4d611bfc565b6001600160a01b038116610cbd57604051631e4fbdf760e01b81525f6004820152602401610cb4565b5f818152600183016020526040812054611cbb57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ff565b505f6105ff565b806001600160a01b03163b5f03611cf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610cb4565b5f805160206127a283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611d419190612786565b5f60405180830381855af49150503d805f8114611d79576040519150601f19603f3d011682016040523d82523d5f602084013e611d7e565b606091505b5091509150611d8e858383611db6565b95945050505050565b34156109505760405163b398979f60e01b815260040160405180910390fd5b606082611dcb57611dc682611e12565b611805565b8151158015611de257506001600160a01b0384163b155b15611e0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610cb4565b5080611805565b805115611e225780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610cc6575f80fd5b8035611e5a81611e3b565b919050565b5f60208284031215611e6f575f80fd5b813561180581611e3b565b5f60c08284031215611245575f80fd5b5f805f80848603610260811215611e9f575f80fd5b611ea98787611e7a565b9450611eb88760c08801611e7a565b9350604061017f1982011215611ecc575f80fd5b6101808601925060a06101bf1982011215611ee5575f80fd5b509295919450926101c0019150565b634e487b7160e01b5f52604160045260245ffd5b60405161014081016001600160401b0381118282101715611f2b57611f2b611ef4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f5957611f59611ef4565b604052919050565b5f6001600160401b03821115611f7957611f79611ef4565b50601f01601f191660200190565b5f8060408385031215611f98575f80fd5b8235611fa381611e3b565b915060208301356001600160401b03811115611fbd575f80fd5b8301601f81018513611fcd575f80fd5b8035611fe0611fdb82611f61565b611f31565b818152866020838501011115611ff4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f5b8381101561202d578181015183820152602001612015565b50505f910152565b5f815180845261204c816020860160208601612013565b601f01601f19169290920160200192915050565b602081525f6118056020830184612035565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156120c757603f198886030184526120b5858351612035565b94509285019290850190600101612099565b5092979650505050505050565b602080825282518282018190525f9190848201906040850190845b818110156121145783516001600160a01b0316835292840192918401916001016120ef565b50909695505050505050565b5f8060408385031215612131575f80fd5b823561213c81611e3b565b9150602083013561214c81611e3b565b809150509250929050565b803563ffffffff81168114611e5a575f80fd5b5f610140828403121561217b575f80fd5b612183611f08565b61218c83611e4f565b815261219a60208401612157565b60208201526121ab60408401612157565b60408201526121bc60608401611e4f565b60608201526121cd60808401611e4f565b60808201526121de60a08401611e4f565b60a08201526121ef60c08401611e4f565b60c082015260e083013560e0820152610100808401358183015250610120612218818501611e4f565b908201529392505050565b5f60208284031215612233575f80fd5b5035919050565b803561224581611e3b565b6001600160a01b0316825260208101356001600160401b03811680821461226a575f80fd5b80602085015250505050565b803561228181611e3b565b6001600160a01b03908116835260208201359061229d82611e3b565b90811660208401526040820135906122b482611e3b565b90811660408401526060820135906122cb82611e3b565b90811660608401526080820135906122e282611e3b565b808216608085015250505050565b5f6102808201905060018060a01b03808816835286356020840152602087013560408401526040870135606084015260608701356080840152608087013560a084015260a087013561234181611e3b565b1660c0830152843560e0830152602085013561010083015260408501356101208301526060850135610140830152608085013561016083015260a08501356101808301526123936101a083018561223a565b6123a16101e0830184612276565b9695505050505050565b5f602082840312156123bb575f80fd5b815161180581611e3b565b5f602082840312156123d6575f80fd5b81516001600160401b038111156123eb575f80fd5b8201601f810184136123fb575f80fd5b8051612409611fdb82611f61565b81815285602083850101111561241d575f80fd5b611d8e826020830160208601612013565b634e487b7160e01b5f52603260045260245ffd5b5f60c08284031215612452575f80fd5b60405160c081018181106001600160401b038211171561247457612474611ef4565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b8051611e5a81611e3b565b5f6101008083850312156124d6575f80fd5b604051908101906001600160401b03821181831017156124f8576124f8611ef4565b8160405283518152602084015160208201526040840151915061251a82611e3b565b81604082015261252c606085016124b9565b606082015261253d608085016124b9565b608082015261254e60a085016124b9565b60a082015261255f60c085016124b9565b60c082015261257060e085016124b9565b60e0820152949350505050565b66029b4bd32903e160cd1b81525f855161259e816007850160208a01612013565b8083019050620103e160ed1b80600783015286516125c381600a850160208b01612013565b600a920191820181905285516125e081600d850160208a01612013565b600d92019182015283516125fb816010840160208801612013565b016010019695505050505050565b6b0283934b1b2a332b2b2103e160a51b81525f835161262f81600c850160208801612013565b620103e160ed1b600c91840191820152835161265281600f840160208801612013565b01600f01949350505050565b81516001600160a01b0316815261014081016020830151612687602084018263ffffffff169052565b50604083015161269f604084018263ffffffff169052565b5060608301516126ba60608401826001600160a01b03169052565b5060808301516126d560808401826001600160a01b03169052565b5060a08301516126f060a08401826001600160a01b03169052565b5060c083015161270b60c08401826001600160a01b03169052565b5060e083810151908301526101008084015190830152610120928301516001600160a01b0316929091019190915290565b5f6020828403121561274c575f80fd5b5051919050565b818103818111156105ff57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8251612797818460208701612013565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220614535e62669586a66203dbb6b80f9c0b52c1966ea0f5c4bf4d1e06e8fa9838e64736f6c63430008170033", + "nonce": "0x92", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x15dca3a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb041ee0dc68034df62fc5319c2446042e4bfe57c9e1b6f4978304b77317a29d5", + "transactionIndex": "0x70", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x80fe5", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x41b733fe827a5cc663f795e0a0b2100aa7fa6d16", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaf41957757", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x920c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x174783c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xaea27d66fb9d54b58f437c4e8a95a27a5133135e2c38f9cd7f9e7d66fa5eb4dd", + "transactionIndex": "0x79", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x7bbe4", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xed1c89ef12f7b0dc2afa9e1a8bc89be70fcd4c2d", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xa78cc8d912", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x8ba0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18e2d77", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x23f718a23cd35e63767cb34051ce68ce953416cb480c11617d5e77be37e6f4a0", + "transactionIndex": "0x7c", + "blockHash": "0x46faa92e59cfda391155ce73ef7c527f8b9f5608c671ee11bc302cf84fb9d13b", + "blockNumber": "0x16b7c8b", + "gasUsed": "0x5f9cf", + "effectiveGasPrice": "0xfb474b", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x41c3ce7663a7b06faacf8d62574999f3ca1d753a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x7fd19695c8", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x6a84" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x145f3f8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x80b22caa779b431094aa005a786b38215dcf73509122c6e16896ed54939a0628", + "transactionIndex": "0x6d", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0xe9544", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xba1b87a252dbb06e1bfa367898bbcf78e548f048", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x140f65ed450", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x10b78" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1821a03", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0baa50bd0a40d95390eddab25e8095c73df404285112e89064e80c3366177f7b", + "transactionIndex": "0x80", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x6d16a", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0b703e06170f72e1fea923a4e44fea2e3b406f8c", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x92c662f01e", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x7a50" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18cd295", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x356a343eec0b48c2eff03fbe7b7f03721f18fcd56aabb8524d6eaa38212b56b3", + "transactionIndex": "0x83", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x7de60", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xa079ad0c7c2620d368c68efcd57d286c1959c6ee", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaa66626176", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x8e00" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x194e4f6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcd853d0a9067ac6b82048294edd06e846d7fd8b1a6ba45dca874c8c8bc35cdb6", + "transactionIndex": "0x84", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x81261", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x2ffe1bf4e74f15cefe68f13e2a40a9fb041bef29", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xaf71957635", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x9234" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1cef4ca", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6019f0f9990e3a49f596f9617c24ec080fda51a63c42d92431c050616c30aff1", + "transactionIndex": "0x86", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x3861cf", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe38a640174c8ff20a89a272967f960538be06b44", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x4d044afbbec", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x402e4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1d5f4c2", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x379781a1a43c5de33d825897efc44ccbca6ce33903d320c25f2cca5456dd633a", + "transactionIndex": "0x87", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x6fff8", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xfeb81e6c614fb7d53b2f9a1ef67459b55b3d84dc", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x96f99609f5", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x7dd0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1dc16f9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfc921f6ef492366e0696a8b5f91833fb0fd7314cbac241b34363b90902c74e0d", + "transactionIndex": "0x88", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x62237", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x870b4573f23ec6490247a500603238e7754d3ebe", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x8353301a36", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x6d70" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x202989a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x02ef53f7d37cd9356a4aa9ceed345c42d699021eed41e5e881e63c838d420bec", + "transactionIndex": "0x89", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x2681a1", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x5d4b12e547b462a16b2afd3ca821c77da986df97", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x3122fed74b8", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x28f28" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x22b927c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf7e45e9af14b76bdc31077268ca42dcfb95006a0aa83819477375bdc7176ce25", + "transactionIndex": "0x8a", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x28f9e2", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xdc8504a256093b3ea224415afed3c6f401eabba1", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x391931da6b5", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0x2f950" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x246eaf8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbd0a71434e69bdf73528fe8df9c5f69a578ecd8e06f0ff746bef4c1a64970883", + "transactionIndex": "0x94", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0x919f5", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x15f42baf389652cc0904f6fcc54b907a1147a7ab", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xc6732e84e3", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0xa560" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x25121a1", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5572ef8331b15a456c953389b549fbd225264babc091106b0afa303d27e37456", + "transactionIndex": "0x95", + "blockHash": "0x7e44877363be6f4b03aee5188f5d55aeab6f336d51e46b42b27bee5d6b8888c5", + "blockNumber": "0x16b7c8c", + "gasUsed": "0xa36a9", + "effectiveGasPrice": "0xfb1b33", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x001e0b48886404dda139132cefb03891e37c4e55", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x49b275", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xdffcc78448", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x210ddfdae", + "l1GasUsed": "0xbaa8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1656a85", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x40f17d48d71e960279cd6436dede17d2083de8744310833b5b2d6f1040adb43c", + "transactionIndex": "0x52", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0x51eb9", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0a7cc36c14f766a8561f95a0a5af90f0da46c49a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x713c395061", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5a7c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x172c3e7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x89dbd7fa8b92821b35970fbb0b249c202512926002a573f03dd127858cb408bc", + "transactionIndex": "0x53", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0xd5962", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xb5a851ebd5d501607af946d36496ebce3eb9b1d4", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x133582d3909", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0xf598" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x18f01ca", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x83e24315e70dc2ea664bb2f10e6379f1eb51365e77e1aa74f61dfc7da9a0ddc2", + "transactionIndex": "0x58", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0xf0b12", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x44a956a465dddf7809b0d99a1b2aa90e4b019719", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x15bcd0bfd2a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x115ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1df4f05", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf43c1326c4f1d880ef37bfa1a8fe54d7b34ff0e5a08f6260d246a51515a6845b", + "transactionIndex": "0x67", + "blockHash": "0xc1b728076efb51e633f7f7ba7d2962bc7c70091e31368b47f29abbdb74aed520", + "blockNumber": "0x16b7c8d", + "gasUsed": "0x187620", + "effectiveGasPrice": "0xfb511d", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x42e124065d379e6cfc0c8554c73eae439ef8eb85", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x2395d0df855", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x1c6f8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x139066f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0c73848f4e0f798b1922d5c37b5217ebcfde388af726842c05de7d31a0f17f69", + "transactionIndex": "0x5a", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x90212", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x49d3e25408fc670db9a3e83ad3ae92c85235a957", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xcd64435b1d", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0xa420" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x15ed78f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0633b005c2b398d3c9f57e31267d8137c18fb2a9d62f92726463ef58dfcf9d7d", + "transactionIndex": "0x62", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x14a323", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x82b512fac9c21356bf5a050c710d4de7b7ff6eda", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x1e041e90c1a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x17fc4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1645b0d", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2a2eeeb3d0905c9c854e6bc108faae663f2e9f4de78adbed267c60a3089b198", + "transactionIndex": "0x63", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x5837e", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1658c459ee72984769438696c82e419c137484fe", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x7aa8fd3bc0", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x6204" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x17cfe34", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8b6a2a06bd0b1cf8feb40f9bab0e38fd83734d0dd19c31d2798ff837bb862f52", + "transactionIndex": "0x6b", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x52228", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x9f239921a3076cc9a0d24b28adebd52edd6895a2", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x71aa59a02b", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5ad4" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1a0059f", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd063cf4db0aff6e3b229118cd2cbd0d46d5d4708cae035586cfae447b47d8ab5", + "transactionIndex": "0x72", + "blockHash": "0x1f8078ef3f3197632b6c4dbf63f80c3b0efba3846da50b59d0738b86c0b33090", + "blockNumber": "0x16b7c8e", + "gasUsed": "0x185e76", + "effectiveGasPrice": "0xfb4d72", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x43d1c35eaff6779751cfcf6000c8d7c30dc4655a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x2374a72495a", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x1c550" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x152e108", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x38211ee8646c4323b784f49474cf76db82c9c787c5eb5e2daefb0953b5c0646f", + "transactionIndex": "0x67", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "gasUsed": "0x4fa120", + "effectiveGasPrice": "0xfb4322", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xea61a6e3fe0c147a0989d4a526f5ccae940c7656", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x74a3d90db53", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x5d348" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x175d81c", + "logs": [ + { + "address": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "blockTimestamp": "0x67615601", + "transactionHash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionIndex": "0x68", + "logIndex": "0xdb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002004000000000000000000000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc2705473a3626c9e67f5ac1584715db66c7fc4ae7587ba6cec7eb17ac1c29b98", + "transactionIndex": "0x68", + "blockHash": "0xc7334a3ab209b45757bfe899c1cebe9826840730082e826c468b0768a5a1b11b", + "blockNumber": "0x16b7c8f", + "gasUsed": "0x22f714", + "effectiveGasPrice": "0xfb4322", + "from": "0xa5040d66a8e609fce17d115f4726a2311331bb21", + "to": null, + "contractAddress": "0x3281853d11b6adafaa23d01652211f8170c7ef3c", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x41822f", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x3324816ae11", + "l1FeeScalar": "0.002269", + "l1GasPrice": "0x227891d76", + "l1GasUsed": "0x28de0" + } + ], + "libraries": [ + "src/libraries/AccountingLibrary.sol:AccountingLibrary:0x001E0b48886404Dda139132CeFb03891E37c4E55", + "src/libraries/CapsLibrary.sol:CapsLibrary:0x41C3ce7663A7B06fAacF8d62574999F3cA1d753A", + "src/libraries/DepositTokenLibrary.sol:DepositTokenLibrary:0x0b703E06170f72E1fEA923a4e44fea2e3b406f8C", + "src/libraries/LoanLibrary.sol:LoanLibrary:0xFEB81e6c614fb7D53B2f9A1Ef67459b55B3d84dc", + "src/libraries/RiskLibrary.sol:RiskLibrary:0x15F42Baf389652cc0904f6FcC54B907A1147a7AB", + "src/libraries/YieldCurveLibrary.sol:YieldCurveLibrary:0xED1c89EF12f7B0dC2afA9e1a8bC89BE70fcD4C2d", + "src/libraries/actions/BuyCreditLimit.sol:BuyCreditLimit:0x41B733FE827a5cC663F795E0A0b2100aA7fa6D16", + "src/libraries/actions/BuyCreditMarket.sol:BuyCreditMarket:0x43D1C35eaFF6779751CFcf6000C8D7c30dc4655A", + "src/libraries/actions/Claim.sol:Claim:0x1658C459Ee72984769438696c82E419C137484FE", + "src/libraries/actions/Compensate.sol:Compensate:0x82B512FAc9c21356Bf5a050C710d4de7b7FF6eDa", + "src/libraries/actions/Deposit.sol:Deposit:0xA079Ad0c7c2620d368c68EfcD57D286C1959c6EE", + "src/libraries/actions/Initialize.sol:Initialize:0xe38A640174c8Ff20A89a272967f960538Be06b44", + "src/libraries/actions/Liquidate.sol:Liquidate:0xB5a851EbD5d501607af946D36496eBCE3Eb9b1d4", + "src/libraries/actions/LiquidateWithReplacement.sol:LiquidateWithReplacement:0x44A956A465dDdf7809B0d99A1B2Aa90e4B019719", + "src/libraries/actions/Repay.sol:Repay:0x9f239921A3076cc9a0d24B28AdeBD52Edd6895a2", + "src/libraries/actions/SelfLiquidate.sol:SelfLiquidate:0x49d3E25408FC670DB9A3E83AD3AE92c85235A957", + "src/libraries/actions/SellCreditLimit.sol:SellCreditLimit:0x2FFe1Bf4E74f15cEFE68f13E2a40A9Fb041Bef29", + "src/libraries/actions/SellCreditMarket.sol:SellCreditMarket:0x42E124065D379E6cFC0c8554C73EAe439eF8EB85", + "src/libraries/actions/SetUserConfiguration.sol:SetUserConfiguration:0x870B4573F23ec6490247a500603238e7754d3EbE", + "src/libraries/actions/UpdateConfig.sol:UpdateConfig:0xBa1b87A252DbB06e1bfa367898bBcf78e548F048", + "src/libraries/actions/Withdraw.sol:Withdraw:0x0a7cC36c14F766a8561f95A0a5aF90f0Da46c49A", + "src/v1.5/libraries/MarketFactoryLibrary.sol:MarketFactoryLibrary:0xEa61a6e3fE0c147A0989D4a526f5CcaE940c7656", + "src/v1.5/libraries/NonTransferrableScaledTokenV1_5FactoryLibrary.sol:NonTransferrableScaledTokenV1_5FactoryLibrary:0xdC8504a256093B3eA224415AfeD3c6f401eABba1", + "src/v1.5/libraries/PriceFeedFactoryLibrary.sol:PriceFeedFactoryLibrary:0x5D4B12e547B462A16B2aFd3CA821c77Da986Df97" + ], + "pending": [], + "returns": {}, + "timestamp": 1734432794, + "chain": 8453, + "commit": "0f0e166" +} \ No newline at end of file diff --git a/deployments/base-production-size-factory.json b/deployments/base-production-size-factory.json index f9a45176..22abf3ef 100644 --- a/deployments/base-production-size-factory.json +++ b/deployments/base-production-size-factory.json @@ -2,7 +2,7 @@ "chainId": "8453", "commit": "e294ea5", "deployments": { - "SizeFactory-implementation": "0xFa64CC164b87De05382dD7EfB3B2236ce8D90709", + "SizeFactory-implementation": "0x3281853D11B6AdAFaa23d01652211F8170C7eF3c", "SizeFactory-proxy": "0x330Dc31dB45672c1F565cf3EC91F9a01f8f3DF0b" }, "networkConfiguration": "base-production-size-factory", diff --git a/foundry.toml b/foundry.toml index e2a567e4..ba9cd111 100644 --- a/foundry.toml +++ b/foundry.toml @@ -7,6 +7,7 @@ no_match_test = 'testFork_' solc_version = '0.8.23' evm_version = 'shanghai' + ignored_warnings_from = ["lib/aave-v3-core"] [profile.fork] src = "src" diff --git a/lib/v3-core b/lib/v3-core new file mode 160000 index 00000000..6562c52e --- /dev/null +++ b/lib/v3-core @@ -0,0 +1 @@ +Subproject commit 6562c52e8f75f0c10f9deaf44861847585fc8129 diff --git a/lib/v3-periphery b/lib/v3-periphery new file mode 160000 index 00000000..b325bb09 --- /dev/null +++ b/lib/v3-periphery @@ -0,0 +1 @@ +Subproject commit b325bb0905d922ae61fcc7df85ee802e8df5e96c diff --git a/package.json b/package.json index 1758b3a6..d303eb8f 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "Size v2", "scripts": { "solhint": "solhint \"src/**/*.sol\" --max-warnings 0", + "typechain": "npx typechain --target=ethers-v6", "get-libraries": "(j=$((0x10)); find src/libraries test/helpers/libraries -type f | sed 's/.*\\///' | sed 's/.sol//' | while read i; do echo -n \"($i,$(printf \"0x%x\" $j))\\n\";j=$((j+1));done) | paste -sd, -", "echidna-property": "echidna . --contract CryticTester --config echidna.yaml --test-mode property", "echidna-assertion": "echidna . --contract CryticTester --config echidna.yaml --test-mode assertion", diff --git a/remappings.txt b/remappings.txt index d443d4dc..0d27eee8 100644 --- a/remappings.txt +++ b/remappings.txt @@ -9,3 +9,5 @@ @crytic/properties=lib/properties @aave=lib/aave-v3-core/contracts halmos-cheatcodes=lib/halmos-cheatcodes/src +@uniswap/v3-core=lib/v3-core +@uniswap/v3-periphery=lib/v3-periphery diff --git a/script/BaseScript.sol b/script/BaseScript.sol index 14d28c84..6beb19e9 100644 --- a/script/BaseScript.sol +++ b/script/BaseScript.sol @@ -5,6 +5,7 @@ import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap import {ISize} from "@src/interfaces/ISize.sol"; import {SizeFactory} from "@src/v1.5/SizeFactory.sol"; +import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; import {ISizeV1_5} from "@src/v1.5/interfaces/ISizeV1_5.sol"; import {Script} from "forge-std/Script.sol"; diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 9867548a..c5e93af7 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -56,29 +56,34 @@ contract DeployScript is BaseScript, Networks, Deploy { ); parameters.push( Parameter({ - key: "underlyingCollateralTokenAggregator", - value: Strings.toHexString(params.underlyingCollateralTokenAggregator) + key: "priceFeedParams.baseAggregator", + value: Strings.toHexString(address(params.priceFeedParams.baseAggregator)) }) ); parameters.push( Parameter({ - key: "underlyingBorrowTokenAggregator", - value: Strings.toHexString(params.underlyingBorrowTokenAggregator) + key: "priceFeedParams.quoteAggregator", + value: Strings.toHexString(address(params.priceFeedParams.quoteAggregator)) }) ); parameters.push( Parameter({ - key: "underlyingCollateralTokenHeartbeat", - value: Strings.toString(params.underlyingCollateralTokenHeartbeat) + key: "priceFeedParams.baseStalePriceInterval", + value: Strings.toString(params.priceFeedParams.baseStalePriceInterval) }) ); parameters.push( Parameter({ - key: "underlyingBorrowTokenHeartbeat", - value: Strings.toString(params.underlyingBorrowTokenHeartbeat) + key: "priceFeedParams.quoteStalePriceInterval", + value: Strings.toString(params.priceFeedParams.quoteStalePriceInterval) + }) + ); + parameters.push( + Parameter({ + key: "priceFeedParams.sequencerUptimeFeed", + value: Strings.toHexString(address(params.priceFeedParams.sequencerUptimeFeed)) }) ); - parameters.push(Parameter({key: "sequencerUptimeFeed", value: Strings.toHexString(params.sequencerUptimeFeed)})); parameters.push(Parameter({key: "variablePool", value: Strings.toHexString(address(variablePool))})); parameters.push(Parameter({key: "fragmentationFee", value: Strings.toString(params.fragmentationFee)})); diff --git a/script/Deploy.sol b/script/Deploy.sol index 708de210..231f4fc0 100644 --- a/script/Deploy.sol +++ b/script/Deploy.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.23; import {IPool} from "@aave/interfaces/IPool.sol"; import {WadRayMath} from "@aave/protocol/libraries/math/WadRayMath.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; import "@crytic/properties/contracts/util/Hevm.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; @@ -15,7 +16,7 @@ import {PoolMock} from "@test/mocks/PoolMock.sol"; import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {PriceFeedMock} from "@test/mocks/PriceFeedMock.sol"; @@ -189,18 +190,12 @@ abstract contract Deploy { variablePool = IPool(_networkParams.variablePool); if ( - _networkParams.underlyingCollateralTokenAggregator == address(0) - && _networkParams.underlyingBorrowTokenAggregator == address(0) + _networkParams.priceFeedParams.baseAggregator == AggregatorV3Interface(address(0)) + && _networkParams.priceFeedParams.quoteAggregator == AggregatorV3Interface(address(0)) ) { priceFeed = new PriceFeedMock(_owner); } else { - priceFeed = new PriceFeed( - _networkParams.underlyingCollateralTokenAggregator, - _networkParams.underlyingBorrowTokenAggregator, - _networkParams.sequencerUptimeFeed, - _networkParams.underlyingCollateralTokenHeartbeat, - _networkParams.underlyingBorrowTokenHeartbeat - ); + priceFeed = new PriceFeed(_networkParams.priceFeedParams); } if (_networkParams.variablePool == address(0)) { diff --git a/script/GetChainlinkAggregatorInformation.s.sol b/script/GetChainlinkAggregatorInformation.s.sol new file mode 100644 index 00000000..a5dad33c --- /dev/null +++ b/script/GetChainlinkAggregatorInformation.s.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; +import {console} from "forge-std/Script.sol"; + +import {Vm} from "forge-std/Vm.sol"; + +import {BaseScript} from "@script/BaseScript.sol"; +import {Deploy} from "@script/Deploy.sol"; +import {Networks} from "@script/Networks.sol"; + +contract GetChainlinkAggregatorInformationScript is BaseScript, Networks, Deploy { + EnumerableMap.AddressToUintMap addresses; + + function setUp() public {} + + event NewRound(uint256 roundId, address startedBy, uint256 startedAt); + + function run() public ignoreGas { + uint256 deploymentBlock = 17147278; + address aggregator = 0x330eC3210511cC8f5A87A737A08905092e033AF3; + + bytes32[] memory topics = new bytes32[](1); + topics[0] = NewRound.selector; + + uint256 toBlock = vm.getBlockNumber(); + uint256 fromBlock = deploymentBlock; + uint256 batchSize = 100_000; + + Vm.EthGetLogs[] memory logs; + + while (fromBlock < toBlock) { + uint256 endBlock = (fromBlock + batchSize > toBlock) ? toBlock : fromBlock + batchSize; + + logs = vm.eth_getLogs(fromBlock, endBlock, aggregator, topics); + + for (uint256 j = 0; j < logs.length; j++) { + Vm.EthGetLogs memory log = logs[j]; + uint64 blockNumber = log.blockNumber; + console.log("%s", blockNumber); + } + + fromBlock = endBlock + 1; + } + } +} diff --git a/script/Networks.sol b/script/Networks.sol index 01f89acf..7b33a2df 100644 --- a/script/Networks.sol +++ b/script/Networks.sol @@ -3,21 +3,22 @@ pragma solidity 0.8.23; import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; + struct NetworkConfiguration { address weth; address underlyingCollateralToken; address underlyingBorrowToken; address variablePool; - address underlyingCollateralTokenAggregator; - address underlyingBorrowTokenAggregator; - address sequencerUptimeFeed; - uint256 underlyingCollateralTokenHeartbeat; - uint256 underlyingBorrowTokenHeartbeat; uint256 fragmentationFee; uint256 crOpening; uint256 crLiquidation; uint256 minimumCreditBorrowAToken; uint256 borrowATokenCap; + PriceFeedParams priceFeedParams; } abstract contract Networks { @@ -33,16 +34,23 @@ abstract contract Networks { underlyingCollateralToken: 0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14, underlyingBorrowToken: 0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8, variablePool: address(0), - underlyingCollateralTokenAggregator: address(0), - underlyingBorrowTokenAggregator: address(0), - sequencerUptimeFeed: address(0), - underlyingCollateralTokenHeartbeat: 0, - underlyingBorrowTokenHeartbeat: 0, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + uniswapV3Pool: IUniswapV3Pool(address(0)), + twapWindow: 0, + averageBlockTime: 0, + baseToken: IERC20Metadata(address(0)), + quoteToken: IERC20Metadata(address(0)), + baseAggregator: AggregatorV3Interface(address(0)), + quoteAggregator: AggregatorV3Interface(address(0)), + baseStalePriceInterval: 0, + quoteStalePriceInterval: 0, + sequencerUptimeFeed: AggregatorV3Interface(address(0)) + }) }); } else if (Strings.equal(networkConfiguration, "base-sepolia-weth-usdc")) { return NetworkConfiguration({ @@ -50,16 +58,23 @@ abstract contract Networks { underlyingCollateralToken: 0x4200000000000000000000000000000000000006, underlyingBorrowToken: 0x036CbD53842c5426634e7929541eC2318f3dCF7e, variablePool: 0x07eA79F68B2B3df564D0A34F8e19D9B1e339814b, - underlyingCollateralTokenAggregator: 0x4aDC67696bA383F43DD60A9e78F2C97Fbbfc7cb1, - underlyingBorrowTokenAggregator: 0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165, - sequencerUptimeFeed: address(0), - underlyingCollateralTokenHeartbeat: 1200 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0x4200000000000000000000000000000000000006), + quoteToken: IERC20Metadata(0x036CbD53842c5426634e7929541eC2318f3dCF7e), + baseAggregator: AggregatorV3Interface(0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165), + quoteAggregator: AggregatorV3Interface(0x4aDC67696bA383F43DD60A9e78F2C97Fbbfc7cb1), + baseStalePriceInterval: 1200 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(address(0)) + }) }); } else if (Strings.equal(networkConfiguration, "base-sepolia-link-usdc")) { return NetworkConfiguration({ @@ -67,16 +82,23 @@ abstract contract Networks { underlyingCollateralToken: 0xE4aB69C077896252FAFBD49EFD26B5D171A32410, underlyingBorrowToken: 0x036CbD53842c5426634e7929541eC2318f3dCF7e, variablePool: 0x07eA79F68B2B3df564D0A34F8e19D9B1e339814b, - underlyingCollateralTokenAggregator: 0xb113F5A928BCfF189C998ab20d753a47F9dE5A61, - underlyingBorrowTokenAggregator: 0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165, - sequencerUptimeFeed: address(0), - underlyingCollateralTokenHeartbeat: 86400 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0xE4aB69C077896252FAFBD49EFD26B5D171A32410), + quoteToken: IERC20Metadata(0x036CbD53842c5426634e7929541eC2318f3dCF7e), + baseAggregator: AggregatorV3Interface(0xb113F5A928BCfF189C998ab20d753a47F9dE5A61), + quoteAggregator: AggregatorV3Interface(0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165), + baseStalePriceInterval: 86400 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(address(0)) + }) }); } else if (Strings.equal(networkConfiguration, "mainnet-production")) { return NetworkConfiguration({ @@ -84,16 +106,23 @@ abstract contract Networks { underlyingCollateralToken: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, underlyingBorrowToken: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, variablePool: 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2, - underlyingCollateralTokenAggregator: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419, - underlyingBorrowTokenAggregator: 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6, - sequencerUptimeFeed: address(0), - underlyingCollateralTokenHeartbeat: 3600 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2), + quoteToken: IERC20Metadata(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48), + baseAggregator: AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419), + quoteAggregator: AggregatorV3Interface(0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6), + baseStalePriceInterval: 3600 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(address(0)) + }) }); } else if (Strings.equal(networkConfiguration, "base-mocks")) { return NetworkConfiguration({ @@ -101,16 +130,23 @@ abstract contract Networks { underlyingCollateralToken: 0x4200000000000000000000000000000000000006, underlyingBorrowToken: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, variablePool: address(0), - underlyingCollateralTokenAggregator: address(0), - underlyingBorrowTokenAggregator: address(0), - sequencerUptimeFeed: address(0), - underlyingCollateralTokenHeartbeat: 0, - underlyingBorrowTokenHeartbeat: 0, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0x4200000000000000000000000000000000000006), + quoteToken: IERC20Metadata(0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), + baseAggregator: AggregatorV3Interface(address(0)), + quoteAggregator: AggregatorV3Interface(address(0)), + baseStalePriceInterval: 0, + quoteStalePriceInterval: 0, + sequencerUptimeFeed: AggregatorV3Interface(address(0)) + }) }); } else if (Strings.equal(networkConfiguration, "base-production-weth-usdc")) { return NetworkConfiguration({ @@ -118,16 +154,23 @@ abstract contract Networks { underlyingCollateralToken: 0x4200000000000000000000000000000000000006, underlyingBorrowToken: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, variablePool: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5, - underlyingCollateralTokenAggregator: 0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70, - underlyingBorrowTokenAggregator: 0x7e860098F58bBFC8648a4311b374B1D669a2bc6B, - sequencerUptimeFeed: 0xBCF85224fc0756B9Fa45aA7892530B47e10b6433, - underlyingCollateralTokenHeartbeat: 1200 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0x4200000000000000000000000000000000000006), + quoteToken: IERC20Metadata(0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), + baseAggregator: AggregatorV3Interface(0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70), + quoteAggregator: AggregatorV3Interface(0x7e860098F58bBFC8648a4311b374B1D669a2bc6B), + baseStalePriceInterval: 1200 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(0xBCF85224fc0756B9Fa45aA7892530B47e10b6433) + }) }); } else if (Strings.equal(networkConfiguration, "base-production-cbbtc-usdc")) { return NetworkConfiguration({ @@ -135,16 +178,23 @@ abstract contract Networks { underlyingCollateralToken: 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf, underlyingBorrowToken: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, variablePool: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5, - underlyingCollateralTokenAggregator: 0x07DA0E54543a844a80ABE69c8A12F22B3aA59f9D, - underlyingBorrowTokenAggregator: 0x7e860098F58bBFC8648a4311b374B1D669a2bc6B, - sequencerUptimeFeed: 0xBCF85224fc0756B9Fa45aA7892530B47e10b6433, - underlyingCollateralTokenHeartbeat: 86400 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.5e18, crLiquidation: 1.3e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf), + quoteToken: IERC20Metadata(0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), + baseAggregator: AggregatorV3Interface(0x07DA0E54543a844a80ABE69c8A12F22B3aA59f9D), + quoteAggregator: AggregatorV3Interface(0x7e860098F58bBFC8648a4311b374B1D669a2bc6B), + baseStalePriceInterval: 1200 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(0xBCF85224fc0756B9Fa45aA7892530B47e10b6433) + }) }); } else if (Strings.equal(networkConfiguration, "base-production-wsteth-weth")) { return NetworkConfiguration({ @@ -152,16 +202,23 @@ abstract contract Networks { underlyingCollateralToken: 0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452, underlyingBorrowToken: 0x4200000000000000000000000000000000000006, variablePool: 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5, - underlyingCollateralTokenAggregator: 0x43a5C292A453A3bF3606fa856197f09D7B74251a, - underlyingBorrowTokenAggregator: 0x43a5C292A453A3bF3606fa856197f09D7B74251a, - sequencerUptimeFeed: 0xBCF85224fc0756B9Fa45aA7892530B47e10b6433, - underlyingCollateralTokenHeartbeat: 86400 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 0.0005e18, crOpening: 1.3e18, crLiquidation: 1.1e18, minimumCreditBorrowAToken: 0.005e18, - borrowATokenCap: 500e18 + borrowATokenCap: 500e18, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452), + quoteToken: IERC20Metadata(0x4200000000000000000000000000000000000006), + baseAggregator: AggregatorV3Interface(0x43a5C292A453A3bF3606fa856197f09D7B74251a), + quoteAggregator: AggregatorV3Interface(0x43a5C292A453A3bF3606fa856197f09D7B74251a), + baseStalePriceInterval: 86400 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(0xBCF85224fc0756B9Fa45aA7892530B47e10b6433) + }) }); } else if (Strings.equal(networkConfiguration, "arbitrum-production-susde-usdc")) { return NetworkConfiguration({ @@ -169,16 +226,23 @@ abstract contract Networks { underlyingCollateralToken: 0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2, underlyingBorrowToken: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831, variablePool: 0x794a61358D6845594F94dc1DB02A252b5b4814aD, - underlyingCollateralTokenAggregator: 0xf2215b9c35b1697B5f47e407c917a40D055E68d7, - underlyingBorrowTokenAggregator: 0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3, - sequencerUptimeFeed: 0xFdB631F5EE196F0ed6FAa767959853A9F217697D, - underlyingCollateralTokenHeartbeat: 86400 * 1.1e18 / 1e18, - underlyingBorrowTokenHeartbeat: 86400 * 1.1e18 / 1e18, fragmentationFee: 1e6, crOpening: 1.3e18, crLiquidation: 1.1e18, minimumCreditBorrowAToken: 10e6, - borrowATokenCap: 1_000_000e6 + borrowATokenCap: 1_000_000e6, + priceFeedParams: PriceFeedParams({ + twapWindow: 0, + averageBlockTime: 0, + uniswapV3Pool: IUniswapV3Pool(address(0)), + baseToken: IERC20Metadata(0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2), + quoteToken: IERC20Metadata(0xaf88d065e77c8cC2239327C5EDb3A432268e5831), + baseAggregator: AggregatorV3Interface(0xf2215b9c35b1697B5f47e407c917a40D055E68d7), + quoteAggregator: AggregatorV3Interface(0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3), + baseStalePriceInterval: 86400 * 1.1e18 / 1e18, + quoteStalePriceInterval: 86400 * 1.1e18 / 1e18, + sequencerUptimeFeed: AggregatorV3Interface(0xFdB631F5EE196F0ed6FAa767959853A9F217697D) + }) }); } else { revert InvalidNetworkConfiguration(networkConfiguration); diff --git a/script/UniswapV3PriceFeed.s.sol b/script/UniswapV3PriceFeed.s.sol new file mode 100644 index 00000000..980b2d16 --- /dev/null +++ b/script/UniswapV3PriceFeed.s.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {UniswapV3PriceFeed} from "@src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol"; +import {IUniswapV3Factory} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; + +contract UniswapV3PriceFeedScript is Script { + function run() external { + console.log("UniswapV3PriceFeed..."); + + address weth = 0x4200000000000000000000000000000000000006; + address cbbtc = 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf; + address usdc = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; + address poolWethUsdc = 0x6c561B446416E1A00E8E93E221854d6eA4171372; + address poolCbbtcUsdc = 0xeC558e484cC9f2210714E345298fdc53B253c27D; + + UniswapV3PriceFeed priceFeedWethUsdc = new UniswapV3PriceFeed( + 18, IERC20Metadata(weth), IERC20Metadata(usdc), IUniswapV3Pool(poolWethUsdc), 30 minutes, 2 seconds + ); + UniswapV3PriceFeed priceFeedCbbtcUsdc = new UniswapV3PriceFeed( + 18, IERC20Metadata(cbbtc), IERC20Metadata(usdc), IUniswapV3Pool(poolCbbtcUsdc), 10 minutes, 2 seconds + ); + + console.log("priceFeedWethUsdc", priceFeedWethUsdc.getPrice()); + console.log("priceFeedCbbtcUsdc", priceFeedCbbtcUsdc.getPrice()); + } +} diff --git a/script/UpgradeSizeFactory.s.sol b/script/UpgradeSizeFactory.s.sol new file mode 100644 index 00000000..679ca997 --- /dev/null +++ b/script/UpgradeSizeFactory.s.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {SizeFactory} from "@src/v1.5/SizeFactory.sol"; +import {console} from "forge-std/Script.sol"; +import {BaseScript} from "@script/BaseScript.sol"; +import {Deploy} from "@script/Deploy.sol"; + +contract UpgradeSizeFactoryScript is BaseScript, Deploy { + address deployer; + + function setUp() public {} + + modifier parseEnv() { + deployer = vm.envOr("DEPLOYER_ADDRESS", vm.addr(vm.deriveKey(TEST_MNEMONIC, 0))); + _; + } + + function run() public parseEnv broadcast { + console.log("[SizeFactory v1.5] upgrading..."); + + SizeFactory implementation = new SizeFactory(); + + console.log("[SizeFactory v1.5] implementation", address(implementation)); + + console.log("[SizeFactory v1.5] done"); + } +} diff --git a/src/interfaces/ISize.sol b/src/interfaces/ISize.sol index 13f86998..f5bb6b23 100644 --- a/src/interfaces/ISize.sol +++ b/src/interfaces/ISize.sol @@ -31,7 +31,7 @@ import {SetUserConfigurationParams} from "@src/libraries/actions/SetUserConfigur import {ISizeAdmin} from "@src/interfaces/ISizeAdmin.sol"; import {ISizeV1_5} from "@src/v1.5/interfaces/ISizeV1_5.sol"; -string constant VERSION = "v1.5"; +string constant VERSION = "v1.5.1"; /// @title ISize /// @custom:security-contact security@size.credit diff --git a/src/libraries/Errors.sol b/src/libraries/Errors.sol index 8c2c3c4c..a6d2501f 100644 --- a/src/libraries/Errors.sol +++ b/src/libraries/Errors.sol @@ -1,8 +1,6 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.23; -import {LoanStatus} from "@src/libraries/LoanLibrary.sol"; - /// @title Errors /// @custom:security-contact security@size.credit /// @author Size (https://size.credit/) @@ -54,14 +52,14 @@ library Errors { error CREDIT_POSITION_ALREADY_CLAIMED(uint256 positionId); - error CREDIT_POSITION_NOT_TRANSFERRABLE(uint256 creditPositionId, LoanStatus status, uint256 borrowerCR); + error CREDIT_POSITION_NOT_TRANSFERRABLE(uint256 creditPositionId, uint8 loanStatus, uint256 borrowerCR); error LOAN_ALREADY_REPAID(uint256 positionId); error LOAN_NOT_REPAID(uint256 positionId); error LOAN_NOT_ACTIVE(uint256 positionId); - error LOAN_NOT_LIQUIDATABLE(uint256 debtPositionId, uint256 cr, LoanStatus status); - error LOAN_NOT_SELF_LIQUIDATABLE(uint256 creditPositionId, uint256 cr, LoanStatus status); + error LOAN_NOT_LIQUIDATABLE(uint256 debtPositionId, uint256 cr, uint8 loanStatus); + error LOAN_NOT_SELF_LIQUIDATABLE(uint256 creditPositionId, uint256 cr, uint8 loanStatus); error LIQUIDATE_PROFIT_BELOW_MINIMUM_COLLATERAL_PROFIT( uint256 liquidatorProfitCollateralToken, uint256 minimumCollateralProfit ); @@ -92,4 +90,7 @@ library Errors { error ALREADY_INITIALIZED(address account); error UNAUTHORIZED(address account); + + error INVALID_TWAP_WINDOW(); + error INVALID_AVERAGE_BLOCK_TIME(); } diff --git a/src/libraries/actions/BuyCreditMarket.sol b/src/libraries/actions/BuyCreditMarket.sol index 65928373..5685e9bf 100644 --- a/src/libraries/actions/BuyCreditMarket.sol +++ b/src/libraries/actions/BuyCreditMarket.sol @@ -77,7 +77,7 @@ library BuyCreditMarket { if (!state.isCreditPositionTransferrable(params.creditPositionId)) { revert Errors.CREDIT_POSITION_NOT_TRANSFERRABLE( params.creditPositionId, - state.getLoanStatus(params.creditPositionId), + uint8(state.getLoanStatus(params.creditPositionId)), state.collateralRatio(debtPosition.borrower) ); } diff --git a/src/libraries/actions/Compensate.sol b/src/libraries/actions/Compensate.sol index e980fe6a..a7f98e96 100644 --- a/src/libraries/actions/Compensate.sol +++ b/src/libraries/actions/Compensate.sol @@ -68,7 +68,7 @@ library Compensate { if (!state.isCreditPositionTransferrable(params.creditPositionToCompensateId)) { revert Errors.CREDIT_POSITION_NOT_TRANSFERRABLE( params.creditPositionToCompensateId, - state.getLoanStatus(params.creditPositionToCompensateId), + uint8(state.getLoanStatus(params.creditPositionToCompensateId)), state.collateralRatio(debtPositionToCompensate.borrower) ); } diff --git a/src/libraries/actions/Liquidate.sol b/src/libraries/actions/Liquidate.sol index 9e0fe7ec..637a6a8c 100644 --- a/src/libraries/actions/Liquidate.sol +++ b/src/libraries/actions/Liquidate.sol @@ -47,7 +47,7 @@ library Liquidate { revert Errors.LOAN_NOT_LIQUIDATABLE( params.debtPositionId, state.collateralRatio(debtPosition.borrower), - state.getLoanStatus(params.debtPositionId) + uint8(state.getLoanStatus(params.debtPositionId)) ); } diff --git a/src/libraries/actions/SelfLiquidate.sol b/src/libraries/actions/SelfLiquidate.sol index bf70670b..110fca8f 100644 --- a/src/libraries/actions/SelfLiquidate.sol +++ b/src/libraries/actions/SelfLiquidate.sol @@ -39,7 +39,7 @@ library SelfLiquidate { revert Errors.LOAN_NOT_SELF_LIQUIDATABLE( params.creditPositionId, state.collateralRatio(debtPosition.borrower), - state.getLoanStatus(params.creditPositionId) + uint8(state.getLoanStatus(params.creditPositionId)) ); } diff --git a/src/libraries/actions/SellCreditMarket.sol b/src/libraries/actions/SellCreditMarket.sol index ecf60072..14767478 100644 --- a/src/libraries/actions/SellCreditMarket.sol +++ b/src/libraries/actions/SellCreditMarket.sol @@ -86,7 +86,7 @@ library SellCreditMarket { if (!state.isCreditPositionTransferrable(params.creditPositionId)) { revert Errors.CREDIT_POSITION_NOT_TRANSFERRABLE( params.creditPositionId, - state.getLoanStatus(params.creditPositionId), + uint8(state.getLoanStatus(params.creditPositionId)), state.collateralRatio(debtPosition.borrower) ); } diff --git a/src/oracle/deprecated/IPriceFeedV1_5.sol b/src/oracle/deprecated/IPriceFeedV1_5.sol new file mode 100644 index 00000000..5753a41f --- /dev/null +++ b/src/oracle/deprecated/IPriceFeedV1_5.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; + +/// @title IPriceFeedV1_5 +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +/// @notice Getters from previous PriceFeed implementation. Maintained for backwards compatibility. +interface IPriceFeedV1_5 is IPriceFeed { + function base() external view returns (AggregatorV3Interface); + function quote() external view returns (AggregatorV3Interface); + function baseStalePriceInterval() external view returns (uint256); + function quoteStalePriceInterval() external view returns (uint256); +} diff --git a/src/oracle/PriceFeed.sol b/src/oracle/deprecated/PriceFeedV1_5.sol similarity index 97% rename from src/oracle/PriceFeed.sol rename to src/oracle/deprecated/PriceFeedV1_5.sol index f3f3cebd..22e5794a 100644 --- a/src/oracle/PriceFeed.sol +++ b/src/oracle/deprecated/PriceFeedV1_5.sol @@ -5,10 +5,10 @@ import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/Ag import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; import {Math} from "@src/libraries/Math.sol"; -import {IPriceFeed} from "./IPriceFeed.sol"; import {Errors} from "@src/libraries/Errors.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; -/// @title PriceFeed +/// @title PriceFeedV1_5 /// @custom:security-contact security@size.credit /// @author Size (https://size.credit/) /// @notice A contract that provides the price of a `base` asset in terms of a `quote` asset, using an intermediate asset, scaled to 18 decimals (1) @@ -30,7 +30,7 @@ import {Errors} from "@src/libraries/Errors.sol"; /// _baseStalePriceInterval: 86400 seconds (https://data.chain.link/feeds/base/base/steth-eth) /// _quoteStalePriceInterval: 86400 seconds (https://data.chain.link/feeds/base/base/steth-eth) /// answer: STETH/ETH in 1e18 -contract PriceFeed is IPriceFeed { +contract PriceFeedV1_5 is IPriceFeed { uint256 private constant GRACE_PERIOD_TIME = 3600; /* solhint-disable */ diff --git a/src/oracle/v1.5.1/IPriceFeedV1_5_1.sol b/src/oracle/v1.5.1/IPriceFeedV1_5_1.sol new file mode 100644 index 00000000..c9f69c76 --- /dev/null +++ b/src/oracle/v1.5.1/IPriceFeedV1_5_1.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {IPriceFeedV1_5} from "@src/oracle/deprecated/IPriceFeedV1_5.sol"; + +import {ChainlinkPriceFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol"; +import {ChainlinkSequencerUptimeFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol"; +import {UniswapV3PriceFeed} from "@src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol"; + +/// @title IPriceFeedV1_5_1 +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +interface IPriceFeedV1_5_1 is IPriceFeedV1_5 { + /// @notice Returns the Chainlink sequencer uptime feed + function chainlinkSequencerUptimeFeed() external view returns (ChainlinkSequencerUptimeFeed); + /// @notice Returns the Chainlink price feed + function chainlinkPriceFeed() external view returns (ChainlinkPriceFeed); + /// @notice Returns the Uniswap V3 price feed + function uniswapV3PriceFeed() external view returns (UniswapV3PriceFeed); +} diff --git a/src/oracle/v1.5.1/PriceFeed.sol b/src/oracle/v1.5.1/PriceFeed.sol new file mode 100644 index 00000000..66925b3b --- /dev/null +++ b/src/oracle/v1.5.1/PriceFeed.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {IPriceFeedV1_5_1} from "@src/oracle/v1.5.1/IPriceFeedV1_5_1.sol"; +import {ChainlinkPriceFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol"; +import {ChainlinkSequencerUptimeFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol"; +import {UniswapV3PriceFeed} from "@src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; + +struct PriceFeedParams { + IUniswapV3Pool uniswapV3Pool; + uint32 twapWindow; + uint32 averageBlockTime; + IERC20Metadata baseToken; + IERC20Metadata quoteToken; + AggregatorV3Interface baseAggregator; + AggregatorV3Interface quoteAggregator; + uint256 baseStalePriceInterval; + uint256 quoteStalePriceInterval; + AggregatorV3Interface sequencerUptimeFeed; +} + +/// @title PriceFeed +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +/// @notice A contract that provides the price of a `base` asset in terms of a `quote` asset, scaled to 18 decimals, +/// using Chainlink as a primary oracle and Uniswap V3 as a fallback oracle +/// @dev `decimals` must be 18 to comply with Size contracts +/// `sequencerUptimeFeed` can be null for unsupported networks +/// In case the sequencer is down, `getPrice` reverts (see `ChainlinkSequencerUptimeFeed`) +contract PriceFeed is IPriceFeedV1_5_1 { + /* solhint-disable */ + uint256 public constant decimals = 18; + ChainlinkSequencerUptimeFeed public immutable chainlinkSequencerUptimeFeed; + ChainlinkPriceFeed public immutable chainlinkPriceFeed; + UniswapV3PriceFeed public immutable uniswapV3PriceFeed; + /* solhint-enable */ + + constructor(PriceFeedParams memory priceFeedParams) { + chainlinkSequencerUptimeFeed = new ChainlinkSequencerUptimeFeed(priceFeedParams.sequencerUptimeFeed); + chainlinkPriceFeed = new ChainlinkPriceFeed( + decimals, + priceFeedParams.baseAggregator, + priceFeedParams.quoteAggregator, + priceFeedParams.baseStalePriceInterval, + priceFeedParams.quoteStalePriceInterval + ); + uniswapV3PriceFeed = new UniswapV3PriceFeed( + decimals, + priceFeedParams.baseToken, + priceFeedParams.quoteToken, + priceFeedParams.uniswapV3Pool, + priceFeedParams.twapWindow, + priceFeedParams.averageBlockTime + ); + } + + function getPrice() external view override returns (uint256) { + chainlinkSequencerUptimeFeed.validateSequencerIsUp(); + + try chainlinkPriceFeed.getPrice() returns (uint256 price) { + return price; + } catch { + return uniswapV3PriceFeed.getPrice(); + } + } + + function base() external view override returns (AggregatorV3Interface) { + return chainlinkPriceFeed.baseAggregator(); + } + + function quote() external view override returns (AggregatorV3Interface) { + return chainlinkPriceFeed.quoteAggregator(); + } + + function baseStalePriceInterval() external view override returns (uint256) { + return chainlinkPriceFeed.baseStalePriceInterval(); + } + + function quoteStalePriceInterval() external view override returns (uint256) { + return chainlinkPriceFeed.quoteStalePriceInterval(); + } +} diff --git a/src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol b/src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol new file mode 100644 index 00000000..28d1f79e --- /dev/null +++ b/src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {Errors} from "@src/libraries/Errors.sol"; +import {Math} from "@src/libraries/Math.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; + +/// @title ChainlinkPriceFeed +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +/// @notice If `baseAggregator` and `quoteAggregator` are equal, the result is the price of the aggregator without any intermediate asset (2) +/// @dev The price is calculated as `base / quote` +/// Example configuration (1) +/// _base: ETH/USD feed +/// _quote: USDC/USD feed +/// _baseStalePriceInterval: 3600 seconds (https://data.chain.link/ethereum/mainnet/crypto-usd/eth-usd) +/// _quoteStalePriceInterval: 86400 seconds (https://data.chain.link/ethereum/mainnet/stablecoins/usdc-usd) +/// answer: ETH/USDC in 1e18 +/// Note: _base and _quote must have the same number of decimals +/// Note: _base and _quote must have the same intermediate asset (in this example, USD) +/// Example configuration (2) +/// _base: STETH/ETH feed +/// _quote: STETH/ETH feed +/// _baseStalePriceInterval: 86400 seconds (https://data.chain.link/feeds/base/base/steth-eth) +/// _quoteStalePriceInterval: 86400 seconds (https://data.chain.link/feeds/base/base/steth-eth) +/// answer: STETH/ETH in 1e18 +contract ChainlinkPriceFeed is IPriceFeed { + /* solhint-disable */ + uint256 public immutable decimals = 18; + AggregatorV3Interface public immutable baseAggregator; + AggregatorV3Interface public immutable quoteAggregator; + uint256 public immutable baseStalePriceInterval; + uint256 public immutable quoteStalePriceInterval; + /* solhint-enable */ + + constructor( + uint256 _decimals, + AggregatorV3Interface _baseAggregator, + AggregatorV3Interface _quoteAggregator, + uint256 _baseStalePriceInterval, + uint256 _quoteStalePriceInterval + ) { + if (address(_baseAggregator) == address(0) || address(_quoteAggregator) == address(0)) { + revert Errors.NULL_ADDRESS(); + } + + if (_baseStalePriceInterval == 0 || _quoteStalePriceInterval == 0) { + revert Errors.NULL_STALE_PRICE(); + } + + decimals = _decimals; + baseAggregator = _baseAggregator; + quoteAggregator = _quoteAggregator; + baseStalePriceInterval = _baseStalePriceInterval; + quoteStalePriceInterval = _quoteStalePriceInterval; + + if (baseAggregator.decimals() != quoteAggregator.decimals()) { + revert Errors.INVALID_DECIMALS(quoteAggregator.decimals()); + } + + if (address(baseAggregator) == address(quoteAggregator)) { + if (_baseStalePriceInterval != _quoteStalePriceInterval) { + revert Errors.INVALID_STALE_PRICE_INTERVAL(_baseStalePriceInterval, _quoteStalePriceInterval); + } + } + } + + function getPrice() external view returns (uint256) { + if (address(baseAggregator) == address(quoteAggregator)) { + return _getPrice(baseAggregator, baseStalePriceInterval) * 10 ** decimals / 10 ** baseAggregator.decimals(); + } else { + return Math.mulDivDown( + _getPrice(baseAggregator, baseStalePriceInterval), + 10 ** decimals, + _getPrice(quoteAggregator, quoteStalePriceInterval) + ); + } + } + + function _getPrice(AggregatorV3Interface aggregator, uint256 stalePriceInterval) internal view returns (uint256) { + // slither-disable-next-line unused-return + (, int256 price,, uint256 updatedAt,) = aggregator.latestRoundData(); + + if (price <= 0) revert Errors.INVALID_PRICE(address(aggregator), price); + if (block.timestamp - updatedAt > stalePriceInterval) { + revert Errors.STALE_PRICE(address(aggregator), updatedAt); + } + + return SafeCast.toUint256(price); + } +} diff --git a/src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol b/src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol new file mode 100644 index 00000000..118a1089 --- /dev/null +++ b/src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; + +import {Errors} from "@src/libraries/Errors.sol"; + +/// @title ChainlinkSequencerUptimeFeed +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +/// @dev See https://docs.chain.link/data-feeds/l2-sequencer-feeds +/// The sequencer is down if if `startedAt` is 0 (only on Arbitrum) or if `answer` is 1 +contract ChainlinkSequencerUptimeFeed { + uint256 private constant GRACE_PERIOD_TIME = 3600; + + /* solhint-disable */ + AggregatorV3Interface public immutable sequencerUptimeFeed; + /* solhint-enable */ + + constructor(AggregatorV3Interface _sequencerUptimeFeed) { + // the _sequencerUptimeFeed can be null for unsupported networks + sequencerUptimeFeed = _sequencerUptimeFeed; + } + + /// @notice Validates that the sequencer is up + /// @dev If the sequencer is down, reverts with the error message + function validateSequencerIsUp() external view { + if (address(sequencerUptimeFeed) != address(0)) { + // slither-disable-next-line unused-return + (, int256 answer, uint256 startedAt,,) = sequencerUptimeFeed.latestRoundData(); + + if (startedAt == 0 || answer == 1) { + // sequencer is down + revert Errors.SEQUENCER_DOWN(); + } + + if (block.timestamp - startedAt <= GRACE_PERIOD_TIME) { + // time since up + revert Errors.GRACE_PERIOD_NOT_OVER(); + } + } + } +} diff --git a/src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol b/src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol new file mode 100644 index 00000000..e3122689 --- /dev/null +++ b/src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; + +import {FixedPointMathLib} from "@solady/utils/FixedPointMathLib.sol"; +import {Errors} from "@src/libraries/Errors.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; +import {OracleLibrary} from "@uniswap/v3-periphery/contracts/libraries/OracleLibrary.sol"; +import {PoolAddress} from "@uniswap/v3-periphery/contracts/libraries/PoolAddress.sol"; + +/// @title UniswapV3PriceFeed +/// @custom:security-contact security@size.credit +/// @author Size (https://size.credit/) +/// @notice This contract returns the price of 1 `baseToken` in terms of `quoteToken` scaled to `decimals` using Uniswap V3 TWAPs +/// @dev UniswapV3 TWAPs can be manipulated and, as such, this price feed should not be the primary oracle. See https://blog.uniswap.org/uniswap-v3-oracles +/// This contract increases the observation cardinality if it is less than the desired (see https://docs.uniswap.org/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolActions#increaseobservationcardinalitynext) +/// The observation cardinality needed is about `ceil(t / tau) + 1`, where `tau` is the time passing between two blocks (see https://reports.zellic.io/publications/beefy-uniswapv3/sections/observation-cardinality-observation-cardinality) +contract UniswapV3PriceFeed is IPriceFeed { + /* solhint-disable */ + uint256 public immutable decimals; + IERC20Metadata public immutable baseToken; + IERC20Metadata public immutable quoteToken; + IUniswapV3Pool public immutable uniswapV3Pool; + uint32 public immutable twapWindow; + uint32 public immutable averageBlockTime; + /* solhint-enable */ + + constructor( + uint256 _decimals, + IERC20Metadata _baseToken, + IERC20Metadata _quoteToken, + IUniswapV3Pool _uniswapV3Pool, + uint32 _twapWindow, + uint32 _averageBlockTime + ) { + if ( + address(_baseToken) == address(0) || address(_quoteToken) == address(0) + || address(_uniswapV3Pool) == address(0) + ) { + revert Errors.NULL_ADDRESS(); + } + if (address(_baseToken) == address(_quoteToken)) { + revert Errors.INVALID_TOKEN(address(_quoteToken)); + } + if (_twapWindow == 0) { + revert Errors.INVALID_TWAP_WINDOW(); + } + if (_averageBlockTime == 0) { + revert Errors.INVALID_AVERAGE_BLOCK_TIME(); + } + + decimals = _decimals; + baseToken = _baseToken; + quoteToken = _quoteToken; + uniswapV3Pool = _uniswapV3Pool; + twapWindow = _twapWindow; + averageBlockTime = _averageBlockTime; + + // slither-disable-next-line unused-return + (,,, uint16 cardinality,,,) = IUniswapV3Pool(_uniswapV3Pool).slot0(); + uint16 desiredCardinality = SafeCast.toUint16(FixedPointMathLib.divUp(_twapWindow, _averageBlockTime) + 1); + if (cardinality < desiredCardinality) { + uniswapV3Pool.increaseObservationCardinalityNext(desiredCardinality); + } + } + + function getPrice() external view override returns (uint256) { + // slither-disable-next-line unused-return + (int24 meanTick,) = OracleLibrary.consult(address(uniswapV3Pool), twapWindow); + uint128 baseAmount = SafeCast.toUint128(10 ** baseToken.decimals()); + uint256 quoteAmount = + OracleLibrary.getQuoteAtTick(meanTick, baseAmount, address(baseToken), address(quoteToken)); + return quoteAmount * 10 ** decimals / 10 ** quoteToken.decimals(); + } +} diff --git a/src/v1.5/SizeFactory.sol b/src/v1.5/SizeFactory.sol index a0578df5..bf0cad90 100644 --- a/src/v1.5/SizeFactory.sol +++ b/src/v1.5/SizeFactory.sol @@ -26,7 +26,7 @@ import {NonTransferrableScaledTokenV1_5FactoryLibrary} from "@src/v1.5/libraries/NonTransferrableScaledTokenV1_5FactoryLibrary.sol"; import {PriceFeedFactoryLibrary} from "@src/v1.5/libraries/PriceFeedFactoryLibrary.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {NonTransferrableScaledTokenV1_5} from "@src/v1.5/token/NonTransferrableScaledTokenV1_5.sol"; import {VERSION} from "@src/interfaces/ISize.sol"; @@ -63,12 +63,12 @@ contract SizeFactory is ISizeFactory, Ownable2StepUpgradeable, UUPSUpgradeable { function _authorizeUpgrade(address newImplementation) internal override onlyOwner {} function createMarket( - InitializeFeeConfigParams calldata f, - InitializeRiskConfigParams calldata r, - InitializeOracleParams calldata o, - InitializeDataParams calldata d + InitializeFeeConfigParams calldata feeConfigParams, + InitializeRiskConfigParams calldata riskConfigParams, + InitializeOracleParams calldata oracleParams, + InitializeDataParams calldata dataParams ) external onlyOwner returns (ISize market) { - market = MarketFactoryLibrary.createMarket(owner(), f, r, o, d); + market = MarketFactoryLibrary.createMarket(owner(), feeConfigParams, riskConfigParams, oracleParams, dataParams); _addMarket(market); } @@ -94,20 +94,12 @@ contract SizeFactory is ISizeFactory, Ownable2StepUpgradeable, UUPSUpgradeable { emit MarketRemoved(address(market), existed); } - function createPriceFeed( - address underlyingCollateralTokenAggregator, - address underlyingBorrowTokenAggregator, - address sequencerUptimeFeed, - uint256 underlyingCollateralTokenHeartbeat, - uint256 underlyingBorrowTokenHeartbeat - ) external onlyOwner returns (PriceFeed priceFeed) { - priceFeed = PriceFeedFactoryLibrary.createPriceFeed( - underlyingCollateralTokenAggregator, - underlyingBorrowTokenAggregator, - sequencerUptimeFeed, - underlyingCollateralTokenHeartbeat, - underlyingBorrowTokenHeartbeat - ); + function createPriceFeed(PriceFeedParams memory _priceFeedParams) + external + onlyOwner + returns (PriceFeed priceFeed) + { + priceFeed = PriceFeedFactoryLibrary.createPriceFeed(_priceFeedParams); _addPriceFeed(priceFeed); } diff --git a/src/v1.5/interfaces/ISizeFactory.sol b/src/v1.5/interfaces/ISizeFactory.sol index e3c41f68..dedb7184 100644 --- a/src/v1.5/interfaces/ISizeFactory.sol +++ b/src/v1.5/interfaces/ISizeFactory.sol @@ -12,7 +12,7 @@ import { import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import {ISize} from "@src/interfaces/ISize.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {NonTransferrableScaledTokenV1_5} from "@src/v1.5/token/NonTransferrableScaledTokenV1_5.sol"; /// @title ISizeFactory @@ -23,20 +23,14 @@ interface ISizeFactory { /// @notice Creates a new market /// @dev The contract owner is set as the owner of the market function createMarket( - InitializeFeeConfigParams calldata f, - InitializeRiskConfigParams calldata r, - InitializeOracleParams calldata o, - InitializeDataParams calldata d + InitializeFeeConfigParams calldata feeConfigParams, + InitializeRiskConfigParams calldata riskConfigParams, + InitializeOracleParams calldata oracleParams, + InitializeDataParams calldata dataParams ) external returns (ISize); /// @notice Creates a new price feed - function createPriceFeed( - address underlyingCollateralTokenAggregator, - address underlyingBorrowTokenAggregator, - address sequencerUptimeFeed, - uint256 underlyingCollateralTokenHeartbeat, - uint256 underlyingBorrowTokenHeartbeat - ) external returns (PriceFeed); + function createPriceFeed(PriceFeedParams calldata priceFeedParams) external returns (PriceFeed); /// @notice Creates a new borrow aToken function createBorrowATokenV1_5(IPool variablePool, IERC20Metadata underlyingBorrowToken) diff --git a/src/v1.5/libraries/PriceFeedFactoryLibrary.sol b/src/v1.5/libraries/PriceFeedFactoryLibrary.sol index 77240685..8295a560 100644 --- a/src/v1.5/libraries/PriceFeedFactoryLibrary.sol +++ b/src/v1.5/libraries/PriceFeedFactoryLibrary.sol @@ -1,22 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.23; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; library PriceFeedFactoryLibrary { - function createPriceFeed( - address underlyingCollateralTokenAggregator, - address underlyingBorrowTokenAggregator, - address sequencerUptimeFeed, - uint256 underlyingCollateralTokenHeartbeat, - uint256 underlyingBorrowTokenHeartbeat - ) external returns (PriceFeed priceFeed) { - priceFeed = new PriceFeed( - underlyingCollateralTokenAggregator, - underlyingBorrowTokenAggregator, - sequencerUptimeFeed, - underlyingCollateralTokenHeartbeat, - underlyingBorrowTokenHeartbeat - ); + function createPriceFeed(PriceFeedParams memory _priceFeedParams) external returns (PriceFeed priceFeed) { + priceFeed = new PriceFeed(_priceFeedParams); } } diff --git a/test/BaseTest.sol b/test/BaseTest.sol index ba4d2a15..0234257e 100644 --- a/test/BaseTest.sol +++ b/test/BaseTest.sol @@ -4,9 +4,11 @@ pragma solidity 0.8.23; import {Test} from "forge-std/Test.sol"; import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; - import {AssertsHelper} from "@test/helpers/AssertsHelper.sol"; +import {UNISWAP_V3_FACTORY_BYTECODE} from "@test/mocks/UniswapV3FactoryBytecode.sol"; +import {IUniswapV3Factory} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; + import {Size} from "@src/Size.sol"; import {YieldCurve} from "@src/libraries/YieldCurveLibrary.sol"; @@ -440,4 +442,15 @@ contract BaseTest is Test, Deploy, AssertsHelper { function _setLiquidityIndex(uint256 index) internal { _setLiquidityIndex(address(usdc), index); } + + function _deployUniswapV3Factory() internal returns (IUniswapV3Factory) { + bytes memory bytecode = UNISWAP_V3_FACTORY_BYTECODE; + address deployed; + assembly { + deployed := create(0, add(bytecode, 0x20), mload(bytecode)) + if iszero(deployed) { revert(0, 0) } + } + vm.label(deployed, "IUniswapV3Factory"); + return IUniswapV3Factory(deployed); + } } diff --git a/test/fork/oracle/ChainlinkGoesDownUniswapIsUsedAsFallback.t.sol b/test/fork/oracle/ChainlinkGoesDownUniswapIsUsedAsFallback.t.sol new file mode 100644 index 00000000..cfd3a8dd --- /dev/null +++ b/test/fork/oracle/ChainlinkGoesDownUniswapIsUsedAsFallback.t.sol @@ -0,0 +1,125 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; + +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {ISize} from "@src/interfaces/ISize.sol"; +import {Errors} from "@src/libraries/Errors.sol"; +import {UpdateConfigParams} from "@src/libraries/actions/UpdateConfig.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; +import {PriceFeedV1_5} from "@src/oracle/deprecated/PriceFeedV1_5.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; +import {BaseTest} from "@test/BaseTest.sol"; +import {ForkTest} from "@test/fork/ForkTest.sol"; + +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; +import {Test} from "forge-std/Test.sol"; +import {console} from "forge-std/console.sol"; + +// On Oct-18-2024, Chainlink cbBTC/USD price feed went down for over 6h +contract ChainlinkGoesDownUniswapIsUsedAsFallbackTest is ForkTest { + // https://basescan.org/tx/0x2797a77761aa4eda81640b54faa9fe19608c563e146eb566b3fdadea5941070e (aggregatorRoundId 397 executed at Oct-18-2024 03:37:21 PM +UTC) + uint256 blockNumberChainlinkAggregatorRoundId397 = 21238247; + // https://basescan.org/tx/0x5861fd0da0cdc07265494e4e7f80608f00f4e2e4211735ee06918f8330569786 (aggregatorRoundId 398 executed at Oct-18-2024 10:05:33 PM +UTC) + uint256 blockNumberChainlinkAggregatorRoundId398 = 21249893; + + address UNISWAP_V3_POOL_CBBTC_USDC_BASE_MAINNET = 0xeC558e484cC9f2210714E345298fdc53B253c27D; + + uint256 updatedAt; + + ISize sizeCbBtcUsdc; + address sizeCbBtcUsdcOwner; + + function setUp() public override(ForkTest) { + super.setUp(); + vm.createSelectFork("base"); + (sizeCbBtcUsdc,, sizeCbBtcUsdcOwner) = importDeployments("base-production-cbbtc-usdc"); + + vm.rollFork(blockNumberChainlinkAggregatorRoundId397); + (,,, updatedAt,) = + AggregatorV3Interface(PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).base()).latestRoundData(); + } + + function testFork_ChainlinkGoesDownUniswapIsUsedAsFallbackTest_without_fallback_wrong_stale_interval() public { + vm.rollFork(blockNumberChainlinkAggregatorRoundId398 - 1); // Chainlink is down + + uint256 baseStalePriceInterval = + PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).baseStalePriceInterval(); + assertEq(baseStalePriceInterval, 86400 * 1.1e18 / 1e18); + uint256 quoteStalePriceInterval = + PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).quoteStalePriceInterval(); + assertEq(quoteStalePriceInterval, 86400 * 1.1e18 / 1e18); + + assertGt(IPriceFeed(address(sizeCbBtcUsdc.oracle().priceFeed)).getPrice(), 0); + } + + function testFork_ChainlinkGoesDownUniswapIsUsedAsFallbackTest_without_fallback_correct_stale_interval() public { + AggregatorV3Interface base = PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).base(); + AggregatorV3Interface quote = PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).quote(); + AggregatorV3Interface sequencerUptimeFeed = AggregatorV3Interface(address(0)); + PriceFeedV1_5 v1_5PriceFeedCorrectStaleInterval = new PriceFeedV1_5( + address(base), + address(quote), + address(sequencerUptimeFeed), + uint256(1200 * 1.1e18 / 1e18), + uint256(86400 * 1.1e18 / 1e18) + ); + + vm.prank(sizeCbBtcUsdcOwner); + sizeCbBtcUsdc.updateConfig( + UpdateConfigParams({key: "priceFeed", value: uint256(uint160(address(v1_5PriceFeedCorrectStaleInterval)))}) + ); + + vm.rollFork(blockNumberChainlinkAggregatorRoundId398 - 1); // Chainlink is down + + vm.expectRevert(abi.encodeWithSelector(Errors.STALE_PRICE.selector, address(base), updatedAt)); + v1_5PriceFeedCorrectStaleInterval.getPrice(); + + vm.rollFork(blockNumberChainlinkAggregatorRoundId398); // Chainlink is up + assertGt(v1_5PriceFeedCorrectStaleInterval.getPrice(), 0); + } + + function testFork_ChainlinkGoesDownUniswapIsUsedAsFallbackTest_with_fallback_correct_stale_interval() public { + AggregatorV3Interface baseAggregator = PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).base(); + AggregatorV3Interface quoteAggregator = PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).quote(); + AggregatorV3Interface sequencerUptimeFeed = AggregatorV3Interface(address(0)); + IERC20Metadata underlyingCollateralToken = sizeCbBtcUsdc.data().underlyingCollateralToken; + IERC20Metadata underlyingBorrowToken = sizeCbBtcUsdc.data().underlyingBorrowToken; + uint256 baseStalePriceInterval = + PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).baseStalePriceInterval(); + uint256 quoteStalePriceInterval = + PriceFeedV1_5(address(sizeCbBtcUsdc.oracle().priceFeed)).quoteStalePriceInterval(); + IUniswapV3Pool uniswapV3Pool = IUniswapV3Pool(address(UNISWAP_V3_POOL_CBBTC_USDC_BASE_MAINNET)); + uint32 averageBlockTime = 2 seconds; + uint32 twapWindow = 30 minutes; + + PriceFeed v1_5_1PriceFeed = new PriceFeed( + PriceFeedParams({ + baseAggregator: baseAggregator, + quoteAggregator: quoteAggregator, + sequencerUptimeFeed: sequencerUptimeFeed, + baseStalePriceInterval: baseStalePriceInterval, + quoteStalePriceInterval: quoteStalePriceInterval, + twapWindow: twapWindow, + uniswapV3Pool: uniswapV3Pool, + baseToken: underlyingCollateralToken, + quoteToken: underlyingBorrowToken, + averageBlockTime: averageBlockTime + }) + ); + vm.prank(sizeCbBtcUsdcOwner); + sizeCbBtcUsdc.updateConfig( + UpdateConfigParams({key: "priceFeed", value: uint256(uint160(address(v1_5_1PriceFeed)))}) + ); + + vm.rollFork(blockNumberChainlinkAggregatorRoundId398 - 1); // Chainlink is down + uint256 uniswapPrice = v1_5_1PriceFeed.getPrice(); + assertGt(uniswapPrice, 0); + + vm.rollFork(blockNumberChainlinkAggregatorRoundId398); // Chainlink is up + uint256 chainlinkPrice = v1_5_1PriceFeed.getPrice(); + assertGt(chainlinkPrice, 0); + assertTrue(uniswapPrice != chainlinkPrice); + } +} diff --git a/test/fork/v1.5/ForkReinitializeV1_5.t.sol b/test/fork/v1.5/ForkReinitializeV1_5.t.sol index f945263f..d9fe9340 100644 --- a/test/fork/v1.5/ForkReinitializeV1_5.t.sol +++ b/test/fork/v1.5/ForkReinitializeV1_5.t.sol @@ -6,7 +6,7 @@ import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/U import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import {DepositParams} from "@src/libraries/actions/Deposit.sol"; import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; import {Size} from "@src/Size.sol"; diff --git a/test/fork/v1.5/ForkReinitializeV1_5Audit.t.sol b/test/fork/v1.5/ForkReinitializeV1_5Audit.t.sol index 8a00f40f..7485a72d 100644 --- a/test/fork/v1.5/ForkReinitializeV1_5Audit.t.sol +++ b/test/fork/v1.5/ForkReinitializeV1_5Audit.t.sol @@ -7,7 +7,7 @@ import {EnumerableMap} from "@openzeppelin/contracts/utils/structs/EnumerableMap import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import {Size} from "@src/Size.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {ClaimParams} from "@src/libraries/actions/Claim.sol"; import {RepayParams} from "@src/libraries/actions/Repay.sol"; diff --git a/test/fork/v1.5/ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc.t.sol b/test/fork/v1.5/ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc.t.sol index 133c3c67..4f6c3858 100644 --- a/test/fork/v1.5/ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc.t.sol +++ b/test/fork/v1.5/ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc.t.sol @@ -21,7 +21,7 @@ import {console2 as console} from "forge-std/console2.sol"; contract ForkReinitializeV1_5WethUsdcAfterCbbtcUsdcTest is ForkTest { using EnumerableMap for EnumerableMap.AddressToUintMap; - uint256 internal BLOCK_NUMBER_CBBTC_USDC_ALREADY_MIGRATED = 22761358; + uint256 internal BLOCK_NUMBER_CBBTC_USDC_ALREADY_MIGRATED = 22878761; ISize internal sizeWethUsdc; ISize internal sizeCbbtcUsdc; @@ -86,6 +86,17 @@ contract ForkReinitializeV1_5WethUsdcAfterCbbtcUsdcTest is ForkTest { newBorrowAToken = NonTransferrableScaledTokenV1_5(address(sizeFactory.getBorrowATokensV1_5()[0])); } + function testFork_ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc_initialized() public view { + assertTrue( + address(sizeWethUsdc.data().borrowAToken) != address(newBorrowAToken), + "borrowAToken should not yet be newBorrowAToken" + ); + assertTrue( + address(sizeCbbtcUsdc.data().borrowAToken) == address(newBorrowAToken), + "borrowAToken should be newBorrowAToken" + ); + } + function testFork_ForkReinitializeV1_5WethUsdcAfterCbbtcUsdc_migrate_WETH_USDC() public { string memory market = "base-production-weth-usdc"; ISize isize = sizeWethUsdc; diff --git a/test/fork/v1.5/ForkSizeRegistryFactory.t.sol b/test/fork/v1.5/ForkSizeRegistryFactory.t.sol index f7d44f3c..3d8874ee 100644 --- a/test/fork/v1.5/ForkSizeRegistryFactory.t.sol +++ b/test/fork/v1.5/ForkSizeRegistryFactory.t.sol @@ -5,7 +5,7 @@ import {Size} from "@src/Size.sol"; import {ISize} from "@src/interfaces/ISize.sol"; import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {ForkTest} from "@test/fork/ForkTest.sol"; contract ForkSizeRegistryFactoryTest is ForkTest { diff --git a/test/local/oracle/PriceFeed.t.sol b/test/local/oracle/PriceFeed.t.sol index 15ab6435..66612f4b 100644 --- a/test/local/oracle/PriceFeed.t.sol +++ b/test/local/oracle/PriceFeed.t.sol @@ -1,17 +1,25 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.23; -import {Test} from "forge-std/Test.sol"; - import {MockV3Aggregator} from "@chainlink/contracts/src/v0.8/tests/MockV3Aggregator.sol"; + +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {Errors} from "@src/libraries/Errors.sol"; import {Math} from "@src/libraries/Math.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; +import {BaseTest} from "@test/BaseTest.sol"; import {AssertsHelper} from "@test/helpers/AssertsHelper.sol"; +import {USDC} from "@test/mocks/USDC.sol"; +import {WETH} from "@test/mocks/WETH.sol"; +import {cbBTC} from "@test/mocks/cbBTC.sol"; +import {IUniswapV3Factory} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; -import {Errors} from "@src/libraries/Errors.sol"; +import {IUniswapV3PoolActions} from "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol"; +import {IUniswapV3PoolDerivedState} from "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol"; -contract PriceFeedTest is Test, AssertsHelper { - PriceFeed public priceFeed; +contract PriceFeedTest is BaseTest { + PriceFeed public priceFeedEthToUsd; PriceFeed public priceFeedStethToEth; MockV3Aggregator public ethToUsd; MockV3Aggregator public usdcToUsd; @@ -28,93 +36,143 @@ contract PriceFeedTest is Test, AssertsHelper { int256 public constant STETH_TO_ETH = 0.9997e18; uint8 public constant STETH_TO_ETH_DECIMALS = 18; - function setUp() public { + // data from https://basescan.org/address/0x6c561B446416E1A00E8E93E221854d6eA4171372#readContract @ 2024-12-09 16:45 UTC + uint256 public constant WETH_USDC_UNISWAPV3_PRICE = 3_832.566975e18; + + IUniswapV3Factory public uniswapV3Factory; + IUniswapV3Pool public poolWethUsdc; + IUniswapV3Pool public poolCbbtcUsdc; + uint32 constant averageBlockTime = 2; + + // in UniswapV3, the order of the tokens addresses is important, so we use the same addresses to mock call results + address _weth = 0x4200000000000000000000000000000000000006; + address _steth = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84; + address _usdc = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; + address _cbbtc = 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf; + + function setUp() public override { + vm.warp(block.timestamp + 365 days); + uniswapV3Factory = _deployUniswapV3Factory(); + vm.warp(block.timestamp + 13 days); + + vm.etch(_weth, address(new WETH()).code); + vm.etch(_steth, address(new WETH()).code); + vm.etch(_usdc, address(new USDC(address(this))).code); + vm.etch(_cbbtc, address(new cbBTC(address(this))).code); + + poolWethUsdc = IUniswapV3Pool(uniswapV3Factory.createPool(address(_weth), address(_usdc), 3000)); + vm.mockCall( + address(poolWethUsdc), + abi.encodeWithSelector(IUniswapV3PoolActions.increaseObservationCardinalityNext.selector), + abi.encode("") + ); + + int56[] memory tickCumulatives = new int56[](2); + tickCumulatives[0] = int56(-6642986263212); + tickCumulatives[1] = int56(-6643335114518); + + uint160[] memory secondsPerLiquidityCumulativeX128s = new uint160[](2); + secondsPerLiquidityCumulativeX128s[0] = uint160(136458673653206150903896084965204473313540616); + secondsPerLiquidityCumulativeX128s[1] = uint160(136458673653206150906167645090919780850778950); + + vm.mockCall( + address(poolWethUsdc), + abi.encodeWithSelector(IUniswapV3PoolDerivedState.observe.selector), + abi.encode(tickCumulatives, secondsPerLiquidityCumulativeX128s) + ); + sequencerUptimeFeed = new MockV3Aggregator(0, SEQUENCER_UP); vm.warp(block.timestamp + 1 days); ethToUsd = new MockV3Aggregator(ETH_TO_USD_DECIMALS, ETH_TO_USD); usdcToUsd = new MockV3Aggregator(USDC_TO_USD_DECIMALS, USDC_TO_USD); stethToEth = new MockV3Aggregator(STETH_TO_ETH_DECIMALS, STETH_TO_ETH); - priceFeed = new PriceFeed(address(ethToUsd), address(usdcToUsd), address(sequencerUptimeFeed), 3600, 86400); - priceFeedStethToEth = - new PriceFeed(address(stethToEth), address(stethToEth), address(sequencerUptimeFeed), 86400, 86400); - } - - function test_PriceFeed_validation() public { - vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); - new PriceFeed(address(0), address(usdcToUsd), address(sequencerUptimeFeed), 3600, 86400); - vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); - new PriceFeed(address(ethToUsd), address(0), address(sequencerUptimeFeed), 3600, 86400); - - // do not revert if sequencerUptimeFeed is null - new PriceFeed(address(ethToUsd), address(usdcToUsd), address(0), 3600, 86400); - - vm.expectRevert(abi.encodeWithSelector(Errors.NULL_STALE_PRICE.selector)); - new PriceFeed(address(ethToUsd), address(usdcToUsd), address(sequencerUptimeFeed), 0, 86400); - - vm.expectRevert(abi.encodeWithSelector(Errors.NULL_STALE_PRICE.selector)); - new PriceFeed(address(ethToUsd), address(usdcToUsd), address(sequencerUptimeFeed), 3600, 0); - - vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_STALE_PRICE_INTERVAL.selector, 3600, 86400)); - new PriceFeed(address(stethToEth), address(stethToEth), address(sequencerUptimeFeed), 3600, 86400); + priceFeedEthToUsd = new PriceFeed( + PriceFeedParams({ + uniswapV3Pool: poolWethUsdc, + twapWindow: 30 minutes, + averageBlockTime: averageBlockTime, + baseToken: IERC20Metadata(_weth), + quoteToken: IERC20Metadata(_usdc), + baseAggregator: ethToUsd, + quoteAggregator: usdcToUsd, + baseStalePriceInterval: 3600, + quoteStalePriceInterval: 86400, + sequencerUptimeFeed: sequencerUptimeFeed + }) + ); + priceFeedStethToEth = new PriceFeed( + PriceFeedParams({ + uniswapV3Pool: poolWethUsdc, + twapWindow: 30 minutes, + averageBlockTime: averageBlockTime, + baseToken: IERC20Metadata(_steth), + quoteToken: IERC20Metadata(_weth), + baseAggregator: stethToEth, + quoteAggregator: stethToEth, + baseStalePriceInterval: 86400, + quoteStalePriceInterval: 86400, + sequencerUptimeFeed: sequencerUptimeFeed + }) + ); } function test_PriceFeed_getPrice_success() public view { - assertEq(priceFeed.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1e18, uint256(0.9999e18))); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1e18, uint256(0.9999e18))); + assertEq(priceFeedStethToEth.getPrice(), uint256(STETH_TO_ETH)); } - function test_PriceFeed_getPrice_reverts_null_price() public { + function test_PriceFeed_getPrice_fallbacks_null_price() public { ethToUsd.updateAnswer(0); - vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(ethToUsd), 0)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); ethToUsd.updateAnswer(ETH_TO_USD); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); usdcToUsd.updateAnswer(0); - vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(usdcToUsd), 0)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); usdcToUsd.updateAnswer(USDC_TO_USD); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); } - function test_PriceFeed_getPrice_reverts_negative_price() public { + function test_PriceFeed_getPrice_fallbacks_negative_price() public { ethToUsd.updateAnswer(-1); - vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(ethToUsd), -1)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); ethToUsd.updateAnswer(ETH_TO_USD); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); usdcToUsd.updateAnswer(-1); - vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(usdcToUsd), -1)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); usdcToUsd.updateAnswer(USDC_TO_USD); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); } - function test_PriceFeed_getPrice_reverts_stale_price() public { + function test_PriceFeed_getPrice_fallbacks_stale_price() public { uint256 updatedAt = block.timestamp; vm.warp(updatedAt + 3600 + 1); - vm.expectRevert(abi.encodeWithSelector(Errors.STALE_PRICE.selector, address(ethToUsd), updatedAt)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); ethToUsd.updateAnswer((ETH_TO_USD * 1.1e8) / 1e8); - assertEq(priceFeed.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1.1e18, uint256(0.9999e18))); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1.1e18, uint256(0.9999e18))); vm.warp(updatedAt + 86400 + 1); ethToUsd.updateAnswer(ETH_TO_USD); - vm.expectRevert(abi.encodeWithSelector(Errors.STALE_PRICE.selector, address(usdcToUsd), updatedAt)); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), WETH_USDC_UNISWAPV3_PRICE); + + usdcToUsd.updateAnswer(USDC_TO_USD); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); usdcToUsd.updateAnswer((USDC_TO_USD * 1.2e8) / 1e8); - assertEq(priceFeed.getPrice(), (uint256(2200.12e18) * 1e18 * 1e18) / (uint256(0.9999e18) * uint256(1.2e18))); + assertEq( + priceFeedEthToUsd.getPrice(), (uint256(2200.12e18) * 1e18 * 1e18) / (uint256(0.9999e18) * uint256(1.2e18)) + ); } function test_PriceFeed_getPrice_reverts_sequencer_down() public { @@ -123,16 +181,16 @@ contract PriceFeedTest is Test, AssertsHelper { sequencerUptimeFeed.updateAnswer(1); vm.expectRevert(abi.encodeWithSelector(Errors.SEQUENCER_DOWN.selector)); - priceFeed.getPrice(); + priceFeedEthToUsd.getPrice(); sequencerUptimeFeed.updateAnswer(0); vm.expectRevert(abi.encodeWithSelector(Errors.GRACE_PERIOD_NOT_OVER.selector)); - priceFeed.getPrice(); + priceFeedEthToUsd.getPrice(); vm.warp(block.timestamp + 3600 + 1); usdcToUsd.updateAnswer(USDC_TO_USD); ethToUsd.updateAnswer(ETH_TO_USD); - priceFeed.getPrice(); + assertEq(priceFeedEthToUsd.getPrice(), Math.mulDivDown(uint256(ETH_TO_USD), 1e18, uint256(USDC_TO_USD))); } function test_PriceFeed_getPrice_direct() public view { @@ -142,16 +200,28 @@ contract PriceFeedTest is Test, AssertsHelper { function test_PriceFeed_getPrice_different_decimals() public { stethToEth = new MockV3Aggregator(8, 0.9997e8); - priceFeedStethToEth = - new PriceFeed(address(stethToEth), address(stethToEth), address(sequencerUptimeFeed), 86400, 86400); + priceFeedStethToEth = new PriceFeed( + PriceFeedParams({ + uniswapV3Pool: poolWethUsdc, + twapWindow: 30 minutes, + averageBlockTime: averageBlockTime, + baseToken: IERC20Metadata(_steth), + quoteToken: IERC20Metadata(_weth), + baseAggregator: stethToEth, + quoteAggregator: stethToEth, + baseStalePriceInterval: 86400, + quoteStalePriceInterval: 86400, + sequencerUptimeFeed: sequencerUptimeFeed + }) + ); assertEq(priceFeedStethToEth.getPrice(), uint256(0.9997e18)); assertEq(priceFeedStethToEth.decimals(), 18); } function test_PriceFeed_getPrice_is_consistent() public view { - uint256 price_1 = priceFeed.getPrice(); - uint256 price_2 = priceFeed.getPrice(); - uint256 price_3 = priceFeed.getPrice(); + uint256 price_1 = priceFeedEthToUsd.getPrice(); + uint256 price_2 = priceFeedEthToUsd.getPrice(); + uint256 price_3 = priceFeedEthToUsd.getPrice(); assertEq(price_1, price_2, price_3); } } diff --git a/test/local/oracle/adapters/ChainlinkPriceFeed.t.sol b/test/local/oracle/adapters/ChainlinkPriceFeed.t.sol new file mode 100644 index 00000000..fe84c9ac --- /dev/null +++ b/test/local/oracle/adapters/ChainlinkPriceFeed.t.sol @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {Test} from "forge-std/Test.sol"; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {MockV3Aggregator} from "@chainlink/contracts/src/v0.8/tests/MockV3Aggregator.sol"; +import {Math} from "@src/libraries/Math.sol"; +import {ChainlinkPriceFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkPriceFeed.sol"; +import {AssertsHelper} from "@test/helpers/AssertsHelper.sol"; + +import {Errors} from "@src/libraries/Errors.sol"; + +contract ChainlinkPriceFeedTest is Test, AssertsHelper { + ChainlinkPriceFeed public priceFeed; + ChainlinkPriceFeed public priceFeedStethToEth; + MockV3Aggregator public ethToUsd; + MockV3Aggregator public usdcToUsd; + MockV3Aggregator public stethToEth; + + // values as of 2023-12-05 08:00:00 UTC + int256 public constant ETH_TO_USD = 2200.12e8; + uint8 public constant ETH_TO_USD_DECIMALS = 8; + int256 public constant USDC_TO_USD = 0.9999e8; + uint8 public constant USDC_TO_USD_DECIMALS = 8; + int256 public constant STETH_TO_ETH = 0.9997e18; + uint8 public constant STETH_TO_ETH_DECIMALS = 18; + + uint256 constant decimals = 18; + + function setUp() public { + vm.warp(block.timestamp + 1 days); + ethToUsd = new MockV3Aggregator(ETH_TO_USD_DECIMALS, ETH_TO_USD); + usdcToUsd = new MockV3Aggregator(USDC_TO_USD_DECIMALS, USDC_TO_USD); + stethToEth = new MockV3Aggregator(STETH_TO_ETH_DECIMALS, STETH_TO_ETH); + priceFeed = new ChainlinkPriceFeed(decimals, ethToUsd, usdcToUsd, 3600, 86400); + priceFeedStethToEth = new ChainlinkPriceFeed(decimals, stethToEth, stethToEth, 86400, 86400); + } + + function test_ChainlinkPriceFeed_validation() public { + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); + new ChainlinkPriceFeed( + decimals, AggregatorV3Interface(address(0)), AggregatorV3Interface(address(usdcToUsd)), 3600, 86400 + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); + new ChainlinkPriceFeed( + decimals, AggregatorV3Interface(address(ethToUsd)), AggregatorV3Interface(address(0)), 3600, 86400 + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_STALE_PRICE.selector)); + new ChainlinkPriceFeed( + decimals, AggregatorV3Interface(address(ethToUsd)), AggregatorV3Interface(address(usdcToUsd)), 0, 86400 + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_STALE_PRICE.selector)); + new ChainlinkPriceFeed( + decimals, AggregatorV3Interface(address(ethToUsd)), AggregatorV3Interface(address(usdcToUsd)), 3600, 0 + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_DECIMALS.selector, ETH_TO_USD_DECIMALS)); + new ChainlinkPriceFeed( + decimals, AggregatorV3Interface(address(stethToEth)), AggregatorV3Interface(address(ethToUsd)), 3600, 86400 + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_STALE_PRICE_INTERVAL.selector, 3600, 86400)); + new ChainlinkPriceFeed( + decimals, + AggregatorV3Interface(address(stethToEth)), + AggregatorV3Interface(address(stethToEth)), + 3600, + 86400 + ); + } + + function test_ChainlinkPriceFeed_getPrice_success() public view { + assertEq(priceFeed.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1e18, uint256(0.9999e18))); + } + + function test_ChainlinkPriceFeed_getPrice_reverts_null_price() public { + ethToUsd.updateAnswer(0); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(ethToUsd), 0)); + priceFeed.getPrice(); + + ethToUsd.updateAnswer(ETH_TO_USD); + priceFeed.getPrice(); + + usdcToUsd.updateAnswer(0); + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(usdcToUsd), 0)); + priceFeed.getPrice(); + + usdcToUsd.updateAnswer(USDC_TO_USD); + priceFeed.getPrice(); + } + + function test_ChainlinkPriceFeed_getPrice_reverts_negative_price() public { + ethToUsd.updateAnswer(-1); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(ethToUsd), -1)); + priceFeed.getPrice(); + + ethToUsd.updateAnswer(ETH_TO_USD); + priceFeed.getPrice(); + + usdcToUsd.updateAnswer(-1); + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_PRICE.selector, address(usdcToUsd), -1)); + priceFeed.getPrice(); + + usdcToUsd.updateAnswer(USDC_TO_USD); + priceFeed.getPrice(); + } + + function test_ChainlinkPriceFeed_getPrice_reverts_stale_price() public { + uint256 updatedAt = block.timestamp; + vm.warp(updatedAt + 3600 + 1); + + vm.expectRevert(abi.encodeWithSelector(Errors.STALE_PRICE.selector, address(ethToUsd), updatedAt)); + priceFeed.getPrice(); + + ethToUsd.updateAnswer((ETH_TO_USD * 1.1e8) / 1e8); + assertEq(priceFeed.getPrice(), Math.mulDivDown(uint256(2200.12e18), 1.1e18, uint256(0.9999e18))); + + vm.warp(updatedAt + 86400 + 1); + ethToUsd.updateAnswer(ETH_TO_USD); + + vm.expectRevert(abi.encodeWithSelector(Errors.STALE_PRICE.selector, address(usdcToUsd), updatedAt)); + priceFeed.getPrice(); + + usdcToUsd.updateAnswer((USDC_TO_USD * 1.2e8) / 1e8); + assertEq(priceFeed.getPrice(), (uint256(2200.12e18) * 1e18 * 1e18) / (uint256(0.9999e18) * uint256(1.2e18))); + } + + function test_ChainlinkPriceFeed_getPrice_direct() public view { + assertEq(priceFeedStethToEth.getPrice(), uint256(0.9997e18)); + assertEq(priceFeedStethToEth.decimals(), 18); + } + + function test_ChainlinkPriceFeed_getPrice_different_decimals() public { + stethToEth = new MockV3Aggregator(8, 0.9997e8); + priceFeedStethToEth = new ChainlinkPriceFeed( + decimals, + AggregatorV3Interface(address(stethToEth)), + AggregatorV3Interface(address(stethToEth)), + 86400, + 86400 + ); + assertEq(priceFeedStethToEth.getPrice(), uint256(0.9997e18)); + assertEq(priceFeedStethToEth.decimals(), 18); + } + + function test_ChainlinkPriceFeed_getPrice_is_consistent() public view { + uint256 price_1 = priceFeed.getPrice(); + uint256 price_2 = priceFeed.getPrice(); + uint256 price_3 = priceFeed.getPrice(); + assertEq(price_1, price_2, price_3); + } +} diff --git a/test/local/oracle/adapters/ChainlinkSequencerUptimeFeed.t.sol b/test/local/oracle/adapters/ChainlinkSequencerUptimeFeed.t.sol new file mode 100644 index 00000000..45248e62 --- /dev/null +++ b/test/local/oracle/adapters/ChainlinkSequencerUptimeFeed.t.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {Test} from "forge-std/Test.sol"; + +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; +import {MockV3Aggregator} from "@chainlink/contracts/src/v0.8/tests/MockV3Aggregator.sol"; +import {Math} from "@src/libraries/Math.sol"; +import {ChainlinkSequencerUptimeFeed} from "@src/oracle/v1.5.1/adapters/ChainlinkSequencerUptimeFeed.sol"; +import {AssertsHelper} from "@test/helpers/AssertsHelper.sol"; + +import {Errors} from "@src/libraries/Errors.sol"; + +contract ChainlinkSequencerUptimeFeedTest is Test, AssertsHelper { + MockV3Aggregator public sequencerUptimeFeed; + ChainlinkSequencerUptimeFeed public chainlinkSequencerUptimeFeed; + int256 private constant SEQUENCER_UP = 0; + int256 private constant SEQUENCER_DOWN = 1; + + function setUp() public { + sequencerUptimeFeed = new MockV3Aggregator(0, SEQUENCER_UP); + vm.warp(block.timestamp + 1 days); + chainlinkSequencerUptimeFeed = new ChainlinkSequencerUptimeFeed(sequencerUptimeFeed); + } + + function test_ChainlinkSequencerUptimeFeed_validation() public { + // do not revert if sequencerUptimeFeed is null + new ChainlinkSequencerUptimeFeed(AggregatorV3Interface(address(0))); + } + + function test_ChainlinkSequencerUptimeFeed_validateSequencerIsUp_reverts_sequencer_down() public { + uint256 updatedAt = block.timestamp; + vm.warp(updatedAt + 365 days); + + sequencerUptimeFeed.updateAnswer(1); + vm.expectRevert(abi.encodeWithSelector(Errors.SEQUENCER_DOWN.selector)); + chainlinkSequencerUptimeFeed.validateSequencerIsUp(); + + sequencerUptimeFeed.updateAnswer(0); + vm.expectRevert(abi.encodeWithSelector(Errors.GRACE_PERIOD_NOT_OVER.selector)); + chainlinkSequencerUptimeFeed.validateSequencerIsUp(); + + vm.warp(block.timestamp + 3600 + 1); + chainlinkSequencerUptimeFeed.validateSequencerIsUp(); + } +} diff --git a/test/local/oracle/adapters/UniswapV3PriceFeed.t.sol b/test/local/oracle/adapters/UniswapV3PriceFeed.t.sol new file mode 100644 index 00000000..58c04df0 --- /dev/null +++ b/test/local/oracle/adapters/UniswapV3PriceFeed.t.sol @@ -0,0 +1,181 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +import {IERC20Metadata} from "@openzeppelin/contracts/interfaces/IERC20Metadata.sol"; + +import {MockERC20} from "@solady/../test/utils/mocks/MockERC20.sol"; +import {Errors} from "@src/libraries/Errors.sol"; +import {Math} from "@src/libraries/Math.sol"; +import {IPriceFeed} from "@src/oracle/IPriceFeed.sol"; +import {UniswapV3PriceFeed} from "@src/oracle/v1.5.1/adapters/UniswapV3PriceFeed.sol"; +import {BaseTest} from "@test/BaseTest.sol"; +import {USDC} from "@test/mocks/USDC.sol"; +import {WETH} from "@test/mocks/WETH.sol"; +import {cbBTC} from "@test/mocks/cbBTC.sol"; +import {IUniswapV3Factory} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; + +import {IUniswapV3PoolActions} from "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol"; +import {IUniswapV3PoolDerivedState} from "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol"; + +contract UniswapV3PriceFeedTest is BaseTest { + UniswapV3PriceFeed public priceFeedWethUsdc; + UniswapV3PriceFeed public priceFeedCbbtcUsdc; + IUniswapV3Factory public uniswapV3Factory; + IUniswapV3Pool public poolWethUsdc; + IUniswapV3Pool public poolCbbtcUsdc; + + // in UniswapV3, the order of the tokens addresses is important, so we use the same addresses to mock call results + address _weth = 0x4200000000000000000000000000000000000006; + address _usdc = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; + address _cbbtc = 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf; + + uint256 constant decimals = 18; + uint24 public feeTier = 3000; + + uint32 constant averageBlockTime = 2 seconds; + + function setUp() public override { + vm.warp(block.timestamp + 365 days); + uniswapV3Factory = _deployUniswapV3Factory(); + vm.warp(block.timestamp + 13 days); + + vm.etch(_weth, address(new WETH()).code); + vm.etch(_usdc, address(new USDC(address(this))).code); + vm.etch(_cbbtc, address(new cbBTC(address(this))).code); + + poolWethUsdc = IUniswapV3Pool(uniswapV3Factory.createPool(address(_weth), address(_usdc), 3000)); + poolCbbtcUsdc = IUniswapV3Pool(uniswapV3Factory.createPool(address(_cbbtc), address(_usdc), 3000)); + + vm.mockCall( + address(poolWethUsdc), + abi.encodeWithSelector(IUniswapV3PoolActions.increaseObservationCardinalityNext.selector), + abi.encode("") + ); + vm.mockCall( + address(poolCbbtcUsdc), + abi.encodeWithSelector(IUniswapV3PoolActions.increaseObservationCardinalityNext.selector), + abi.encode("") + ); + + priceFeedWethUsdc = new UniswapV3PriceFeed( + decimals, + IERC20Metadata(_weth), + IERC20Metadata(_usdc), + IUniswapV3Pool(address(poolWethUsdc)), + 30 minutes, + averageBlockTime + ); + priceFeedCbbtcUsdc = new UniswapV3PriceFeed( + decimals, + IERC20Metadata(_cbbtc), + IERC20Metadata(_usdc), + IUniswapV3Pool(address(poolCbbtcUsdc)), + 10 minutes, + averageBlockTime + ); + } + + function test_UniswapV3PriceFeed_validation() public { + uint32 twapWindow = 30 minutes; + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); + new UniswapV3PriceFeed(decimals, IERC20Metadata(address(0)), usdc, poolWethUsdc, twapWindow, averageBlockTime); + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); + new UniswapV3PriceFeed( + decimals, IERC20Metadata(_weth), IERC20Metadata(address(0)), poolWethUsdc, twapWindow, averageBlockTime + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_TOKEN.selector, address(_weth))); + new UniswapV3PriceFeed( + decimals, IERC20Metadata(_weth), IERC20Metadata(_weth), poolWethUsdc, twapWindow, averageBlockTime + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_TWAP_WINDOW.selector)); + new UniswapV3PriceFeed( + decimals, IERC20Metadata(_weth), IERC20Metadata(_usdc), poolWethUsdc, 0, averageBlockTime + ); + + vm.expectRevert(abi.encodeWithSelector(Errors.INVALID_AVERAGE_BLOCK_TIME.selector)); + new UniswapV3PriceFeed(decimals, IERC20Metadata(_weth), IERC20Metadata(_usdc), poolWethUsdc, twapWindow, 0); + + vm.expectRevert(abi.encodeWithSelector(Errors.NULL_ADDRESS.selector)); + new UniswapV3PriceFeed( + decimals, + IERC20Metadata(_weth), + IERC20Metadata(_usdc), + IUniswapV3Pool(address(0)), + twapWindow, + averageBlockTime + ); + } + + // data from https://basescan.org/address/0x6c561B446416E1A00E8E93E221854d6eA4171372#readContract @ 2024-12-09 16:45 UTC + function test_UniswapV3PriceFeed_getPrice_success_WETH_USDC() public { + int56[] memory tickCumulatives = new int56[](2); + tickCumulatives[0] = int56(-6642986263212); + tickCumulatives[1] = int56(-6643335114518); + + uint160[] memory secondsPerLiquidityCumulativeX128s = new uint160[](2); + secondsPerLiquidityCumulativeX128s[0] = uint160(136458673653206150903896084965204473313540616); + secondsPerLiquidityCumulativeX128s[1] = uint160(136458673653206150906167645090919780850778950); + + vm.mockCall( + address(poolWethUsdc), + abi.encodeWithSelector(IUniswapV3PoolDerivedState.observe.selector), + abi.encode(tickCumulatives, secondsPerLiquidityCumulativeX128s) + ); + + assertEq(priceFeedWethUsdc.getPrice(), 3_832.566975e18); + } + + // data from https://basescan.org/address/0xeC558e484cC9f2210714E345298fdc53B253c27D#readContract @ 2024-12-09 17:00 UTC + function test_UniswapV3PriceFeed_getPrice_success_cbBTC_USDC() public { + int56[] memory tickCumulatives = new int56[](2); + + tickCumulatives[0] = int56(-502304311066); + tickCumulatives[1] = int56(-502345615066); + + uint160[] memory secondsPerLiquidityCumulativeX128s = new uint160[](2); + secondsPerLiquidityCumulativeX128s[0] = uint160(631045552031200960398984845956857154); + secondsPerLiquidityCumulativeX128s[1] = uint160(631047976341906542761377312252066073); + + vm.mockCall( + address(poolCbbtcUsdc), + abi.encodeWithSelector(IUniswapV3PoolDerivedState.observe.selector), + abi.encode(tickCumulatives, secondsPerLiquidityCumulativeX128s) + ); + + assertEq(priceFeedCbbtcUsdc.getPrice(), 97_618.861707e18); + } + + function test_UniswapV3PriceFeed_getPrice_is_consistent() public { + test_UniswapV3PriceFeed_getPrice_success_WETH_USDC(); + + uint256 price_1 = priceFeedWethUsdc.getPrice(); + uint256 price_2 = priceFeedWethUsdc.getPrice(); + uint256 price_3 = priceFeedWethUsdc.getPrice(); + assertEq(price_1, price_2, price_3); + } + + function test_UniswapV3PriceFeed_getPrice_reverts_if_twapWindow_is_too_long() public { + priceFeedWethUsdc = new UniswapV3PriceFeed( + decimals, + IERC20Metadata(_weth), + IERC20Metadata(_usdc), + IUniswapV3Pool(address(poolWethUsdc)), + 1 days, + averageBlockTime + ); + + vm.mockCallRevert( + address(poolWethUsdc), + abi.encodeWithSelector(IUniswapV3PoolDerivedState.observe.selector), + abi.encode("OLD") + ); + + vm.expectRevert(abi.encode("OLD")); + priceFeedWethUsdc.getPrice(); + } +} diff --git a/test/local/v1.5/SizeFactory.t.sol b/test/local/v1.5/SizeFactory.t.sol index 63efd646..e7d6f49a 100644 --- a/test/local/v1.5/SizeFactory.t.sol +++ b/test/local/v1.5/SizeFactory.t.sol @@ -1,27 +1,44 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.23; -import {MockERC20} from "@solady/../test/utils/mocks/MockERC20.sol"; - +import {AggregatorV3Interface} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; import {MockV3Aggregator} from "@chainlink/contracts/src/v0.8/tests/MockV3Aggregator.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; - import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {MockERC20} from "@solady/../test/utils/mocks/MockERC20.sol"; import {ISize} from "@src/interfaces/ISize.sol"; import {Errors} from "@src/libraries/Errors.sol"; -import {PriceFeed} from "@src/oracle/PriceFeed.sol"; +import {PriceFeed, PriceFeedParams} from "@src/oracle/v1.5.1/PriceFeed.sol"; import {SizeFactory} from "@src/v1.5/SizeFactory.sol"; import {BaseTest} from "@test/BaseTest.sol"; +import {IUniswapV3Factory} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import {IUniswapV3Pool} from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; +import {IUniswapV3PoolActions} from "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol"; contract SizeFactoryTest is BaseTest { address public owner; + uint32 constant averageBlockTime = 2 seconds; + function setUp() public override { owner = makeAddr("owner"); address _feeRecipient = makeAddr("feeRecipient"); setupLocal(owner, _feeRecipient); } + function _deployUniswapV3Pool(MockERC20 baseToken, MockERC20 quoteToken) + internal + returns (IUniswapV3Pool uniswapV3Pool) + { + IUniswapV3Factory uniswapV3Factory = _deployUniswapV3Factory(); + uniswapV3Pool = IUniswapV3Pool(uniswapV3Factory.createPool(address(baseToken), address(quoteToken), 3000)); + vm.mockCall( + address(uniswapV3Pool), + abi.encodeWithSelector(IUniswapV3PoolActions.increaseObservationCardinalityNext.selector), + abi.encode("") + ); + } + function test_SizeFactory_owner() public view { assertTrue(sizeFactory.owner() == owner); } @@ -42,22 +59,22 @@ contract SizeFactoryTest is BaseTest { function test_SizeFactory_set_2_existing_markets_1() public { assertEq(address(sizeFactory.getMarket(0)), address(size)); - assertEq(sizeFactory.getMarketDescriptions()[0], "Size | WETH | USDC | 130 | v1.5"); + assertEq(sizeFactory.getMarketDescriptions()[0], "Size | WETH | USDC | 130 | v1.5.1"); setupLocalGenericMarket(owner, feeRecipient, 60576e18, 0.9999e18, 8, 6, false, false); assertEq(address(sizeFactory.getMarket(1)), address(size)); - assertEq(sizeFactory.getMarketDescriptions()[1], "Size | CTK | BTK | 130 | v1.5"); + assertEq(sizeFactory.getMarketDescriptions()[1], "Size | CTK | BTK | 130 | v1.5.1"); } function test_SizeFactory_set_2_existing_markets_add_3rd_market() public { assertEq(address(sizeFactory.getMarket(0)), address(size)); - assertEq(sizeFactory.getMarketDescriptions()[0], "Size | WETH | USDC | 130 | v1.5"); + assertEq(sizeFactory.getMarketDescriptions()[0], "Size | WETH | USDC | 130 | v1.5.1"); setupLocalGenericMarket(owner, feeRecipient, 60576e18, 0.9999e18, 8, 6, false, false); assertEq(address(sizeFactory.getMarket(1)), address(size)); - assertEq(sizeFactory.getMarketDescriptions()[1], "Size | CTK | BTK | 130 | v1.5"); + assertEq(sizeFactory.getMarketDescriptions()[1], "Size | CTK | BTK | 130 | v1.5.1"); d.underlyingCollateralToken = address(new MockERC20("Liquid staked Ether 2.0", "stETH", 18)); d.underlyingBorrowToken = address(weth); @@ -72,7 +89,7 @@ contract SizeFactoryTest is BaseTest { assertTrue(address(markets[i]) != address(0)); assertTrue(markets[i] != markets[i + 1]); } - assertEq(sizeFactory.getMarketDescriptions()[2], "Size | stETH | WETH | 125 | v1.5"); + assertEq(sizeFactory.getMarketDescriptions()[2], "Size | stETH | WETH | 125 | v1.5.1"); } function test_SizeFactory_set_2_existing_markets_add_3rd_market_remove_1st_market_tryRemove_unexistent_market() @@ -104,9 +121,30 @@ contract SizeFactoryTest is BaseTest { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + vm.mockCall( + address(uniswapV3Pool), + abi.encodeWithSelector(IUniswapV3PoolActions.increaseObservationCardinalityNext.selector), + abi.encode("") + ); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: 30 minutes, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); PriceFeed ipriceFeed = sizeFactory.getPriceFeed(0); assertTrue(sizeFactory.isPriceFeed(address(ipriceFeed))); @@ -157,12 +195,28 @@ contract SizeFactoryTest is BaseTest { assertFalse(existed); } - function test_SizeFactory_addPriceFeed() public { + function test_SizeFactory_addPriceFeed_1() public { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: 30 minutes, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); PriceFeed priceFeed = sizeFactory.getPriceFeed(0); vm.prank(owner); @@ -174,9 +228,25 @@ contract SizeFactoryTest is BaseTest { function test_SizeFactory_removePriceFeed() public { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: 30 minutes, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); PriceFeed priceFeed = sizeFactory.getPriceFeed(0); vm.prank(owner); @@ -205,9 +275,26 @@ contract SizeFactoryTest is BaseTest { function test_SizeFactory_getPriceFeedsCount() public { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + uint32 twapWindow = 30 minutes; + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: twapWindow, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); assertEq(sizeFactory.getPriceFeedsCount(), 1); } @@ -237,15 +324,32 @@ contract SizeFactoryTest is BaseTest { string[] memory descriptions = sizeFactory.getMarketDescriptions(); assertEq(descriptions.length, 3); - assertEq(descriptions[2], "Size | MTA | MTB | 120 | v1.5"); + assertEq(descriptions[2], "Size | MTA | MTB | 120 | v1.5.1"); } function test_SizeFactory_getPriceFeedDescriptions() public { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + uint32 twapWindow = 30 minutes; + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: twapWindow, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); string[] memory descriptions = sizeFactory.getPriceFeedDescriptions(); assertEq(descriptions.length, 1); @@ -265,7 +369,7 @@ contract SizeFactoryTest is BaseTest { function test_SizeFactory_version() public view { string memory version = sizeFactory.version(); - assertEq(version, "v1.5"); + assertEq(version, "v1.5.1"); } function test_SizeFactory_addPriceFeed_reverts_on_null_address() public { @@ -295,12 +399,41 @@ contract SizeFactoryTest is BaseTest { function test_SizeFactory_get_price_feeds() public { MockV3Aggregator aggregator1 = new MockV3Aggregator(2, 1000e2); MockV3Aggregator aggregator2 = new MockV3Aggregator(2, 1e2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator1), address(aggregator2), address(0x1), 1, 2); - - vm.prank(owner); - sizeFactory.createPriceFeed(address(aggregator2), address(aggregator1), address(0x2), 1, 2); + MockERC20 baseToken = new MockERC20("Base Token", "BT", 18); + MockERC20 quoteToken = new MockERC20("Quote Token", "QT", 18); + IUniswapV3Pool uniswapV3Pool = _deployUniswapV3Pool(baseToken, quoteToken); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator1)), + quoteAggregator: AggregatorV3Interface(address(aggregator2)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x1)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: 30 minutes, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); + + vm.prank(owner); + sizeFactory.createPriceFeed( + PriceFeedParams({ + baseAggregator: AggregatorV3Interface(address(aggregator2)), + quoteAggregator: AggregatorV3Interface(address(aggregator1)), + sequencerUptimeFeed: AggregatorV3Interface(address(0x2)), + baseStalePriceInterval: 1, + quoteStalePriceInterval: 2, + twapWindow: 30 minutes, + uniswapV3Pool: IUniswapV3Pool(address(uniswapV3Pool)), + baseToken: IERC20Metadata(address(baseToken)), + quoteToken: IERC20Metadata(address(quoteToken)), + averageBlockTime: averageBlockTime + }) + ); PriceFeed[] memory priceFeeds = sizeFactory.getPriceFeeds(); diff --git a/test/mocks/UniswapV3FactoryBytecode.sol b/test/mocks/UniswapV3FactoryBytecode.sol new file mode 100644 index 00000000..48571922 --- /dev/null +++ b/test/mocks/UniswapV3FactoryBytecode.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.23; + +// https://etherscan.io/address/0x1f98431c8ad98523631ae4a59f267346ea31f984#code +bytes constant UNISWAP_V3_FACTORY_BYTECODE = + hex"60a060405234801561001057600080fd5b503060601b608052600380546001600160a01b031916339081179091556040516000907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36101f4600081815260046020527ffb8cf1d12598d1a039dd1d106665851a96aadf67d0d9ed76fceea282119208b7805462ffffff1916600a90811790915560405190929160008051602061614b83398151915291a3610bb8600081815260046020527f72dffa9b822156d9cf4b0090fa0b656bcb9cc2b2c60eb6acfc20a34f54b31743805462ffffff1916603c90811790915560405190929160008051602061614b83398151915291a3612710600081815260046020527f8cc740d51daa94ff54f33bd779c2d20149f524c340519b49181be5a08615f829805462ffffff191660c890811790915560405190929160008051602061614b83398151915291a360805160601c615fd7610174600039806105515250615fd76000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a1689179055825490981686177fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff16600160a01b8502177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610686906106f5565b8190604051809103906000f59050801580156106a6573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280547fffffffffffff00000000000000000000000000000000000000000000000000001690559695505050505050565b6158c8806107038339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002b8417901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61567e6200024a60003980611fee5280614b5f5280614b96525080610c0052806128fd5280614bca5280614bfc525080610cef52806119cb5280611a0252806129455250806111c75280611a855280611ef4528061244452806129215280613e6b5250806108d252806112f55280611a545280611e8e52806123be5280613d2252508061207b528061227d52806128d9525080612bfb525061567e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f00000000000000000000000000000000000000000000000000000000000000008f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f000000000000000000000000000000000000000000000000000000000000000061309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f00000000000000000000000000000000000000000000000000000000000000008d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f00000000000000000000000000000000000000000000000000000000000000008d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a2f867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f00000000000000000000000000000000000000000000000000000000000000008b8b613b86565b8715611aab57611aab7f00000000000000000000000000000000000000000000000000000000000000008b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f0000000000000000000000000000000000000000000000000000000000000000908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f0000000000000000000000000000000000000000000000000000000000000000908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f00000000000000000000000000000000000000000000000000000000000000009087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f00000000000000000000000000000000000000000000000000000000000000009087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f000000000000000000000000000000000000000000000000000000000000000061513b565b9450614bba60058c8b8d8b8b87898b60017f000000000000000000000000000000000000000000000000000000000000000061513b565b93508415614bee57614bee60068d7f0000000000000000000000000000000000000000000000000000000000000000615325565b8315614c2057614c2060068c7f0000000000000000000000000000000000000000000000000000000000000000615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000aa164736f6c6343000706000ac66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc"; diff --git a/test/mocks/cbBTC.sol b/test/mocks/cbBTC.sol new file mode 100644 index 00000000..cb30f3f9 --- /dev/null +++ b/test/mocks/cbBTC.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract cbBTC is ERC20, Ownable { + constructor(address owner_) ERC20("Coinbase Wrapped BTC", "cbBTC") Ownable(owner_) {} + + function decimals() public view virtual override returns (uint8) { + return 8; + } + + function mint(address to, uint256 amount) external onlyOwner { + _mint(to, amount); + } + + function burn(address from, uint256 amount) external onlyOwner { + _burn(from, amount); + } +}