diff --git a/.github/workflows/deploy-web-app.yml b/.github/workflows/deploy-web-app.yml new file mode 100644 index 0000000..6e15e6b --- /dev/null +++ b/.github/workflows/deploy-web-app.yml @@ -0,0 +1,45 @@ +name: Deploy Web app and Infrastructure +on: workflow_dispatch + +permissions: + id-token: write + contents: read + +jobs: + main: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Node v20.10 + uses: actions/setup-node@v4 + with: + node-version: 20.10 + + # We need foundry for contract types + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Setup AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: ap-south-1 + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + role-session-name: FinthetixDeploymentSession + + - name: Install node dependencies + run: | + cd web-app/infra + npm ci + + - name: Deploy + env: + WEB_APP_INFRA_ENV: ${{ secrets.WEB_APP_INFRA_ENV }} + run: | + cd web-app/infra + echo "$WEB_APP_INFRA_ENV" > .env + npm run deploy \ No newline at end of file diff --git a/.github/workflows/quality-check.yml b/.github/workflows/quality-check.yml new file mode 100644 index 0000000..f915e38 --- /dev/null +++ b/.github/workflows/quality-check.yml @@ -0,0 +1,88 @@ +name: Quality Check + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - edited + +jobs: + test-contracts: + name: Test contracts + env: + FOUNDRY_PROFILE: ci + defaults: + run: + working-directory: contracts + strategy: + fail-fast: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + sparse-checkout: contracts + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Forge build + run: | + forge --version + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test + + build-typecheck-lint: + name: Build, typecheck and lint web app + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + # We need foundry for contract types + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Setup Node v20.10 + uses: actions/setup-node@v4 + with: + node-version: 20.10 + + - name: Install node dependencies + run: | + cd web-app/infra + npm ci + + - name: Build infra and src + env: + WEB_APP_INFRA_ENV: ${{ secrets.WEB_APP_INFRA_ENV }} + run: | + cd web-app/infra + echo "$WEB_APP_INFRA_ENV" > .env + npm run build + + - name: Lint + run: | + cd web-app/infra + npm run lint + cd ../src + npm run lint + + - name: Typecheck + run: | + cd web-app/infra + npm run typecheck + cd ../src + npm run typecheck diff --git a/.github/workflows/test-contracts.yml b/.github/workflows/test-contracts.yml deleted file mode 100644 index 2721f31..0000000 --- a/.github/workflows/test-contracts.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Test Contracts - -on: - pull_request: - types: - - opened - - synchronize - - reopened - - edited - -env: - FOUNDRY_PROFILE: ci -defaults: - run: - working-directory: contracts - -jobs: - check: - strategy: - fail-fast: true - - name: Foundry project - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - sparse-checkout: contracts - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Run Forge build - run: | - forge --version - forge build --sizes - id: build - - - name: Run Forge tests - env: - FOUNDRY_ENV: ${{ secrets.FOUNDRY_ENV }} - run: | - echo $FOUNDRY_ENV > .env - forge test -vvv - id: test diff --git a/contracts/.env.sample b/contracts/.env.sample index 415c050..9057e0c 100644 --- a/contracts/.env.sample +++ b/contracts/.env.sample @@ -1 +1,11 @@ -PRIVATE_KEY="" # deployer private key \ No newline at end of file +# The name of the account from `cast wallet` used for deployment +DEPLOYER_ACC_NAME='' + +# The chain to which you are deploying. Make sure that the etherscan and RPC_URL are looking at the same chain +CHAIN_NAME="sepolia" + +# The API key for verifying contract code on etherscan +ETHER_SCAN_API_KEY="4R9KW77TXKSQ1PV4STEWF1ZHHNZDZ2YAIG" + +# The RPC URL for broadcasting the contract deployment +RPC_URL="https://eth-sepolia.g.alchemy.com/v2/mf16xqfXJrEylHiHuhg4nPfg6H5T9n2l" diff --git a/contracts/Makefile b/contracts/Makefile index 884da89..d636e26 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -1,3 +1,16 @@ +include .env + DEPLOY_SCRIPT=script/01_Deploy.s.sol + +# These hardcoded private keys are from the anvil local chain deploy-dev: $(DEPLOY_SCRIPT) - forge script $(DEPLOY_SCRIPT) --rpc-url http://127.0.0.1:8545 --broadcast \ No newline at end of file + forge script $(DEPLOY_SCRIPT) --rpc-url http://127.0.0.1:8545 --broadcast \ + --sender 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \ + --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + +deploy-prod: $(DEPLOY_SCRIPT) + @forge script $(DEPLOY_SCRIPT) --rpc-url ${RPC_URL} --broadcast \ + --account ${DEPLOYER_ACC_NAME} \ + --sender $$(cast wallet address --account ${DEPLOYER_ACC_NAME}) \ + --verify --chain ${CHAIN_NAME} --etherscan-api-key ${ETHER_SCAN_API_KEY} + \ No newline at end of file diff --git a/contracts/README.md b/contracts/README.md index e6346bc..0b5671d 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -20,4 +20,21 @@ $ forge test ```shell $ forge snapshot +``` + +### Deploy to Local Anvil (development) chain +First start the anvil chain on a separate shell session +```shell +/contracts$ anvil +``` +Then deploy to it with the following command. It will use the default RPC used by anvil +```shell +# (Optional) sudo apt install make +/contracts$ make deploy-dev +``` + +### Deploy to Production Chain +```shell +# (Optional) sudo apt install make +/contracts$ make deploy-prod ``` \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json new file mode 100644 index 0000000..d4c33ac --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247789.json @@ -0,0 +1,74 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740" + ], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247789, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json new file mode 100644 index 0000000..e52e485 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247803.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247803, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json new file mode 100644 index 0000000..cc5c913 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-1711247866.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247866, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json b/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json new file mode 100644 index 0000000..cc5c913 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/11155111/run-latest.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x17", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "function": null, + "arguments": [ + "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c634300081700330000000000000000000000001308d1d0c4642aaa253276f6641af8f196925db7", + "nonce": "0x18", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x25b612979dcca889063177822ed6b15415998c3015449974a2e3d12b43be8d01", + "transactionIndex": "0x51", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x224654", + "gasUsed": "0x81ea3", + "contractAddress": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + }, + { + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x34e12d", + "gasUsed": "0x129ad9", + "contractAddress": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8", + "logs": [ + { + "address": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008474c21a0d8936442d852d1284af5ac922f3ecd8" + ], + "data": "0x", + "blockHash": "0x31adcbea311e625fbab95515761f51b99157f3b93b9b699bd3982adc05afe7f0", + "blockNumber": "0x54a9ac", + "transactionHash": "0x918e90f1bffc589d58b38aa3ee58f1cad61b5f16c5eb452c012b812722078740", + "transactionIndex": "0x52", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000400000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000040000000000000001000000000000000000000001000000000000200000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004020002000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d8834c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingTokenAddr": { + "internal_type": "address", + "value": "0x1308D1d0c4642AaA253276f6641aF8f196925DB7" + }, + "stakingContractAddr": { + "internal_type": "address", + "value": "0x8474c21a0d8936442D852d1284af5ac922f3eCD8" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0x2A29AfdF7c14Ae5b0821B9A998508abe929e5999" + } + }, + "timestamp": 1711247866, + "chain": 11155111, + "multi": false, + "commit": "b8ab18b" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284092.json b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284092.json new file mode 100644 index 0000000..f5ad834 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284092.json @@ -0,0 +1,74 @@ +{ + "transactions": [ + { + "hash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x0", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "function": null, + "arguments": [ + "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033000000000000000000000000ea37306d07ea7bc376ce9f6ed92b90955cc35745", + "nonce": "0x1", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8" + ], + "returns": { + "stakingContractAddr": { + "internal_type": "address", + "value": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861" + }, + "stakingTokenAddr": { + "internal_type": "address", + "value": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a" + } + }, + "timestamp": 1711284092, + "chain": 80001, + "multi": false, + "commit": "1c564bc" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284099.json b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284099.json new file mode 100644 index 0000000..bd14f97 --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284099.json @@ -0,0 +1,153 @@ +{ + "transactions": [ + { + "hash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x0", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "function": null, + "arguments": [ + "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033000000000000000000000000ea37306d07ea7bc376ce9f6ed92b90955cc35745", + "nonce": "0x1", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x107d99", + "gasUsed": "0x81ea3", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000038b71c18de840000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000910f7f1fe3eb7bca60000000000000000000000000000000000000000000000000028dd3d4a2357c000000000000000000000000000000000000000000000000910fb7d700045a4e60", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "logIndex": "0x13", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000001000001000100000000000000000001000000000000000000000000000000000010000080000000000000000000000000000020000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + }, + { + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x1510fe", + "gasUsed": "0x129ad9", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "logs": [ + { + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000019f8d87df747327ca2da2abaef79317c0c5b861" + ], + "data": "0x", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000081f41b47b4cc00000000000000000000000000000000000000000000000000028dd3d4a1bbb0730000000000000000000000000000000000000000000000910fcadab771713a8b000000000000000000000000000000000000000000000000020bdfb95a06e473000000000000000000000000000000000000000000000091104cced2b926068b", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x5", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800400001000000000000000000000000000000000000000008000000000000000000000000200000000000000000000000000000000800001000001000001000100000800000000000001020000000000020000000800000000000010000080000000000000400000000000000020000000000000000000000020000000000000000000000000200000000000000000000000000000000000000000000400000000000000004000000000000000000001000000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingContractAddr": { + "internal_type": "address", + "value": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861" + }, + "stakingTokenAddr": { + "internal_type": "address", + "value": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a" + } + }, + "timestamp": 1711284099, + "chain": 80001, + "multi": false, + "commit": "1c564bc" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284147.json b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284147.json new file mode 100644 index 0000000..8d1921e --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/80001/run-1711284147.json @@ -0,0 +1,153 @@ +{ + "transactions": [ + { + "hash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x0", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "function": null, + "arguments": [ + "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033000000000000000000000000ea37306d07ea7bc376ce9f6ed92b90955cc35745", + "nonce": "0x1", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x107d99", + "gasUsed": "0x81ea3", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000038b71c18de840000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000910f7f1fe3eb7bca60000000000000000000000000000000000000000000000000028dd3d4a2357c000000000000000000000000000000000000000000000000910fb7d700045a4e60", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "logIndex": "0x13", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000001000001000100000000000000000001000000000000000000000000000000000010000080000000000000000000000000000020000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + }, + { + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x1510fe", + "gasUsed": "0x129ad9", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "logs": [ + { + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000019f8d87df747327ca2da2abaef79317c0c5b861" + ], + "data": "0x", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000081f41b47b4cc00000000000000000000000000000000000000000000000000028dd3d4a1bbb0730000000000000000000000000000000000000000000000910fcadab771713a8b000000000000000000000000000000000000000000000000020bdfb95a06e473000000000000000000000000000000000000000000000091104cced2b926068b", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x5", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800400001000000000000000000000000000000000000000008000000000000000000000000200000000000000000000000000000000800001000001000001000100000800000000000001020000000000020000000800000000000010000080000000000000400000000000000020000000000000000000000020000000000000000000000000200000000000000000000000000000000000000000000400000000000000004000000000000000000001000000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingContractAddr": { + "internal_type": "address", + "value": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861" + }, + "stakingTokenAddr": { + "internal_type": "address", + "value": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a" + } + }, + "timestamp": 1711284147, + "chain": 80001, + "multi": false, + "commit": "1c564bc" +} \ No newline at end of file diff --git a/contracts/broadcast/01_Deploy.s.sol/80001/run-latest.json b/contracts/broadcast/01_Deploy.s.sol/80001/run-latest.json new file mode 100644 index 0000000..8d1921e --- /dev/null +++ b/contracts/broadcast/01_Deploy.s.sol/80001/run-latest.json @@ -0,0 +1,153 @@ +{ + "transactions": [ + { + "hash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionType": "CREATE", + "contractName": "FinthetixStakingToken", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0xa8d6f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506040518060400160405280601581526020017f46696e7468657469785374616b696e67546f6b656e0000000000000000000000815250604051806040016040528060038152602001621194d560ea1b81525081600390816100729190610128565b50600461007f8282610128565b5050506101e7565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100b157607f821691505b6020821081036100d157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610123576000816000526020600020601f850160051c810160208610156101005750805b601f850160051c820191505b8181101561011f5782815560010161010c565b5050505b505050565b81516001600160401b0381111561014157610141610087565b6101558161014f845461009d565b846100d7565b602080601f83116001811461018a57600084156101725750858301515b600019600386901b1c1916600185901b17855561011f565b600085815260208120601f198616915b828110156101b95788860151825594840194600190910190840161019a565b50858210156101d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6107b7806101f66000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a9059cbb14610149578063cea265441461015c578063dd62ed3e1461016657600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab61019f565b6040516100b89190610600565b60405180910390f35b6100d46100cf36600461066b565b610231565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610695565b61024b565b604051601281526020016100b8565b6100e86101263660046106d1565b6001600160a01b031660009081526020819052604090205490565b6100ab61026f565b6100d461015736600461066b565b61027e565b61016461028c565b005b6100e86101743660046106f3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101ae90610726565b80601f01602080910402602001604051908101604052809291908181526020018280546101da90610726565b80156102275780601f106101fc57610100808354040283529160200191610227565b820191906000526020600020905b81548152906001019060200180831161020a57829003601f168201915b5050505050905090565b60003361023f8185856102d3565b60019150505b92915050565b6000336102598582856102e5565b610264858585610368565b506001949350505050565b6060600480546101ae90610726565b60003361023f818585610368565b61029e33674563918244f400006103c7565b6040513381527f7ccf505540043a893f416e2e7f2b62d967254fb031524e626d82fcfa70b89d609060200160405180910390a1565b6102e08383836001610401565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610362578181101561035357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61036284848484036000610401565b50505050565b6001600160a01b03831661039257604051634b637e8f60e11b81526000600482015260240161034a565b6001600160a01b0382166103bc5760405163ec442f0560e01b81526000600482015260240161034a565b6102e08383836104d6565b6001600160a01b0382166103f15760405163ec442f0560e01b81526000600482015260240161034a565b6103fd600083836104d6565b5050565b6001600160a01b03841661042b5760405163e602df0560e01b81526000600482015260240161034a565b6001600160a01b03831661045557604051634a1406b160e11b81526000600482015260240161034a565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561036257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c891815260200190565b60405180910390a350505050565b6001600160a01b0383166105015780600260008282546104f69190610760565b909155506105739050565b6001600160a01b038316600090815260208190526040902054818110156105545760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161034a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661058f576002805482900390556105ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105f391815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561062e57858101830151858201604001528201610612565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461066657600080fd5b919050565b6000806040838503121561067e57600080fd5b6106878361064f565b946020939093013593505050565b6000806000606084860312156106aa57600080fd5b6106b38461064f565b92506106c16020850161064f565b9150604084013590509250925092565b6000602082840312156106e357600080fd5b6106ec8261064f565b9392505050565b6000806040838503121561070657600080fd5b61070f8361064f565b915061071d6020840161064f565b90509250929050565b600181811c9082168061073a57607f821691505b60208210810361075a57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024557634e487b7160e01b600052601160045260246000fdfea2646970667358221220ce785b9fa3f57c0750e52a5e3341a369bbf561d3f2f975754ada2521ca1fae4764736f6c63430008170033", + "nonce": "0x0", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionType": "CREATE", + "contractName": "FinthetixStakingContract", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "function": null, + "arguments": [ + "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + ], + "transaction": { + "type": "0x02", + "from": "0x2e4ada956f44298003610315e17c85e24ca89739", + "gas": "0x182cf0", + "value": "0x0", + "data": "0x60c060405260405161001090610075565b604051809103906000f08015801561002c573d6000803e3d6000fd5b506001600160a01b031660a05234801561004557600080fd5b5060405161167938038061167983398101604081905261006491610082565b6001600160a01b03166080526100b2565b610b4680610b3383390190565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b60805160a051610a476100ec600039600081816101be0152610592015260008181610122015281816102da01526104410152610a476000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063905497de1161008c578063c7b8981c11610066578063c7b8981c146101b1578063f7c618c1146101b9578063fbdfd37b146101e0578063ffc1d187146101e957600080fd5b8063905497de1461017a5780639fa2f3cd1461018f578063a694fc3a1461019e57600080fd5b80632e17de78146100d45780633165af1e146100e957806362d45b671461010d57806372f702f31461011d57806375507aee1461015c5780638dcfba4614610165575b600080fd5b6100e76100e2366004610945565b6101f2565b005b336000908152600460205260409020545b6040519081526020015b60405180910390f35b6100fa68056bc75e2d6310000081565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6100fa60025481565b336000908152600360205260409020546100fa565b336000908152600560205260409020546100fa565b6100fa6706f05b59d3b2000081565b6100e76101ac366004610945565b610399565b6100e76104ff565b6101447f000000000000000000000000000000000000000000000000000000000000000081565b6100fa60015481565b6100fa60005481565b3361021057604051630702b3d960e41b815260040160405180910390fd5b80806000036102395760405163038a201d60e01b81523360048201526024015b60405180910390fd5b336000908152600360205260409020548281101561027a5760405163e55c807360e01b81523360048201526024810184905260448101829052606401610230565b610282610627565b33600090815260036020526040812080548592906102a1908490610974565b92505081905550826000808282546102b99190610974565b909155505060405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a2505050565b336103b757604051630702b3d960e41b815260040160405180910390fd5b80806000036103db5760405163038a201d60e01b8152336004820152602401610230565b6103e3610627565b33600090815260036020526040812080548492906104029084906109af565b925050819055508160008082825461041a91906109af565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061098d565b50336000818152600360209081526040918290205491519182527fcddd3be660b4706b208689495b1470f67e1f53d4c62e36817301dd403e9d7bb6910160405180910390a25050565b3361051d57604051630702b3d960e41b815260040160405180910390fd5b610525610627565b33600090815260046020526040812054908190036105585760405163c781471360e01b8152336004820152602401610230565b3360008181526004602081905260408083209290925590516340c10f1960e01b815290810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050604051600081523392507f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351915060200160405180910390a250565b61062f610704565b6002600082825461064091906109af565b90915550506002546040519081527f4427a727232fad41b1e8eae5c814479909622b735af63ab126e4655c84d789bf9060200160405180910390a161068361077e565b33600090815260046020526040812080549091906106a29084906109af565b9091555050336000818152600460209081526040918290205491519182527f60bbff26d658c4e93ffa8398e3d4018ae055a98a86be2586a865f04a3b97a351910160405180910390a24260015560025433600090815260056020526040902055565b600080546000036107155750600090565b600068056bc75e2d631000006001544261072f9190610974565b61073991906109c2565b905060005481101561076b5760015460405163629a1e8560e01b81524260048201526024810191909152604401610230565b60005461077890826109ef565b91505090565b3360009081526003602052604081205481806107a2836706f05b59d3b20000610835565b91509150816107fb5760006107c9846706f05b59d3b2000068056bc75e2d63100000610880565b336000908152600560205260409020546002549192506107e891610974565b6107f290826109c2565b94505050505090565b3360009081526005602052604090205460025461082d91839161081e9190610974565b68056bc75e2d63100000610880565b935050505090565b6000808360000361084c5750600190506000610879565b8383028385828161085f5761085f6109d9565b0414610872576000809250925050610879565b6001925090505b9250929050565b60008383028160001985870982811083820303915050806000036108b7578382816108ad576108ad6109d9565b049250505061093e565b8084116108d75760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60006020828403121561095757600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109875761098761095e565b92915050565b60006020828403121561099f57600080fd5b8151801515811461093e57600080fd5b808201808211156109875761098761095e565b80820281158282048414176109875761098761095e565b634e487b7160e01b600052601260045260246000fd5b600082610a0c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220babf0510a16a509ac9fc6843b11377a8029156b048b52bcee4692b91a194950a64736f6c63430008170033608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033000000000000000000000000ea37306d07ea7bc376ce9f6ed92b90955cc35745", + "nonce": "0x1", + "accessList": [] + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "initCode": "0x608060405234801561001057600080fd5b50336040518060400160405280601481526020017f46696e746865746978526577617264546f6b656e0000000000000000000000008152506040518060400160405280600381526020016211949560ea1b815250816003908161007391906101b3565b50600461008082826101b3565b5050506001600160a01b0381166100b157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100ba816100c0565b50610272565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061013c57607f821691505b60208210810361015c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ae576000816000526020600020601f850160051c8101602086101561018b5750805b601f850160051c820191505b818110156101aa57828155600101610197565b5050505b505050565b81516001600160401b038111156101cc576101cc610112565b6101e0816101da8454610128565b84610162565b602080601f83116001811461021557600084156101fd5750858301515b600019600386901b1c1916600185901b1785556101aa565b600085815260208120601f198616915b8281101561024457888601518255948401946001909101908401610225565b50858210156102625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c5806102816000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561073c57858101830151858201604001528201610720565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b9150604084013590509250925092565b6000602082840312156107f157600080fd5b6107fa8261075d565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075d565b915061082b6020840161075d565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212206486d64809e8c3182e81c5a8c6e0b5988d6b150892711b3b5f6cd92861b40fe164736f6c63430008170033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x107d99", + "gasUsed": "0x81ea3", + "contractAddress": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000038b71c18de840000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000910f7f1fe3eb7bca60000000000000000000000000000000000000000000000000028dd3d4a2357c000000000000000000000000000000000000000000000000910fb7d700045a4e60", + "blockHash": "0x561ac6c8ba637607a54984152f69548521b22a3ca05cfbecfa33400969e8760b", + "blockNumber": "0x2d3a77b", + "transactionHash": "0x7c20d4e842ddaa44503aa898ab4023e582ef9892f0a4a44915678e26f22ea430", + "transactionIndex": "0x8", + "logIndex": "0x13", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000001000001000100000000000000000001000000000000000000000000000000000010000080000000000000000000000000000020000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + }, + { + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "from": "0x2e4aDA956F44298003610315e17C85E24ca89739", + "to": null, + "cumulativeGasUsed": "0x1510fe", + "gasUsed": "0x129ad9", + "contractAddress": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861", + "logs": [ + { + "address": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000019f8d87df747327ca2da2abaef79317c0c5b861" + ], + "data": "0x", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000002e4ada956f44298003610315e17c85e24ca89739", + "0x0000000000000000000000004cefb7df2ff89a05ddd0176de11e01ef0cf7ed84" + ], + "data": "0x0000000000000000000000000000000000000000000000000081f41b47b4cc00000000000000000000000000000000000000000000000000028dd3d4a1bbb0730000000000000000000000000000000000000000000000910fcadab771713a8b000000000000000000000000000000000000000000000000020bdfb95a06e473000000000000000000000000000000000000000000000091104cced2b926068b", + "blockHash": "0x5a2fe438b6a7de3432843f9cf378a353c1ac324d0c2c32c5fe30915d5a30836d", + "blockNumber": "0x2d3a77c", + "transactionHash": "0x5efacd107dcce20ba0f2f1111cb9c10ccf9c694a28016b266e078f289b44cdb8", + "transactionIndex": "0x1", + "logIndex": "0x5", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800400001000000000000000000000000000000000000000008000000000000000000000000200000000000000000000000000000000800001000001000001000100000800000000000001020000000000020000000800000000000010000080000000000000400000000000000020000000000000000000000020000000000000000000000000200000000000000000000000000000000000000000000400000000000000004000000000000000000001000000000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "effectiveGasPrice": "0x6fc23ac0f" + } + ], + "libraries": [], + "pending": [], + "returns": { + "stakingContractAddr": { + "internal_type": "address", + "value": "0x019f8D87df747327ca2da2aBaEf79317c0C5B861" + }, + "stakingTokenAddr": { + "internal_type": "address", + "value": "0xEA37306D07ea7bc376Ce9F6ed92B90955CC35745" + }, + "rewardTokenAddr": { + "internal_type": "address", + "value": "0xdA9B917Fc11C2eE1915c75A25940ee182716153a" + } + }, + "timestamp": 1711284147, + "chain": 80001, + "multi": false, + "commit": "1c564bc" +} \ No newline at end of file diff --git a/contracts/script/01_Deploy.s.sol b/contracts/script/01_Deploy.s.sol index 04b70cb..993ff6f 100644 --- a/contracts/script/01_Deploy.s.sol +++ b/contracts/script/01_Deploy.s.sol @@ -7,8 +7,7 @@ import {FinthetixStakingContract} from "src/FinthetixStakingContract.sol"; contract DappDeployer is Script { function run() public returns (address stakingTokenAddr, address stakingContractAddr, address rewardTokenAddr) { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); + vm.startBroadcast(); FinthetixStakingToken stakingToken = new FinthetixStakingToken(); FinthetixStakingContract stakingContract = new FinthetixStakingContract(address(stakingToken)); vm.stopBroadcast(); diff --git a/web-app/.env.sample b/web-app/.env.sample deleted file mode 100644 index 7a22bfd..0000000 --- a/web-app/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -STAKING_CONTRACT_ADDRESS="" -STAKING_TOKEN_ADDRESS="" -REWARD_TOKEN_ADDRESS="" -PRODUCTION_CHAIN_INFO='{"iconUrls":[],"nativeCurrency":{"name":"xANV","symbol":"xANV","decimals":18},"rpcUrls":["http://localhost:8545"],"chainId":"0x7a69","chainName":"Anvil"}' \ No newline at end of file diff --git a/web-app/README.md b/web-app/README.md deleted file mode 100644 index da8d02a..0000000 --- a/web-app/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Welcome to Remix! - -- [Remix Docs](https://remix.run/docs) - -## Development - -From your terminal: - -```sh -npm run dev -``` - -This starts your app in development mode, rebuilding assets on file changes. - -## Deployment - -First, build your app for production: - -```sh -npm run build -``` - -Then run the app in production mode: - -```sh -npm start -``` - -Now you'll need to pick a host to deploy it to. - -### DIY - -If you're familiar with deploying node applications, the built-in Remix app server is production-ready. - -Make sure to deploy the output of `remix build` - -- `build/` -- `public/build/` diff --git a/web-app/app/lib/env.ts b/web-app/app/lib/env.ts deleted file mode 100644 index 8ec2315..0000000 --- a/web-app/app/lib/env.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { z } from 'zod'; -import { chainInfoSchema } from './loaders/chainInfo'; - -const ethAddressSchema = z.string().regex(/^0x([0-9]|[a-f]){40}$/i); - -const envSchema = z.object({ - NODE_ENV: z.union([ - z.literal('development'), z.literal('production'), z.literal('test'), - ]) satisfies z.ZodType, - TZ: z.string().optional() satisfies z.ZodType, - - STAKING_CONTRACT_ADDRESS: ethAddressSchema, - STAKING_TOKEN_ADDRESS: ethAddressSchema, - REWARD_TOKEN_ADDRESS: ethAddressSchema, - - PRODUCTION_CHAIN_INFO: z.preprocess((val) => { - if (typeof val !== 'string') throw new Error('No JSON string set for chain info env'); - return JSON.parse(val); - }, chainInfoSchema), -}); - -const parseResult = envSchema.safeParse(process.env); -if (!parseResult.success) { - console.error(parseResult.error); - throw new Error('Env variables not parsed as expected'); -} - -export const PARSED_PROCESS_ENV = parseResult.data; diff --git a/web-app/app/lib/loaders/dappInfo.ts b/web-app/app/lib/loaders/dappInfo.ts deleted file mode 100644 index b9c46e0..0000000 --- a/web-app/app/lib/loaders/dappInfo.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { PARSED_PROCESS_ENV } from '../env'; - -export type DappInfo = { - stakingContractAddr: string - stakingTokenAddr: string - rewardTokenAddr: string -}; - -export function getDappInfo(): DappInfo { - return { - stakingContractAddr: PARSED_PROCESS_ENV.STAKING_CONTRACT_ADDRESS, - stakingTokenAddr: PARSED_PROCESS_ENV.STAKING_TOKEN_ADDRESS, - rewardTokenAddr: PARSED_PROCESS_ENV.REWARD_TOKEN_ADDRESS, - }; -} diff --git a/web-app/app/redux/services/lib/Metamask.ts b/web-app/app/redux/services/lib/Metamask.ts deleted file mode 100644 index a7afbc7..0000000 --- a/web-app/app/redux/services/lib/Metamask.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { BrowserProvider } from 'ethers'; -import { ChainInfo } from '~/lib/loaders/chainInfo'; -import { ActiveAddress } from '~/redux/features/user/slice'; - -enum MetamaskHandlerErrors { - ERR1 = 'Metamask not installed', - ERR2 = 'No account found in Metamask', -} -export default class MetamaskHandler { - public readonly provider: BrowserProvider; - public readonly ethereum: NonNullable; - - constructor() { - if (!window.ethereum) { - throw new Error(MetamaskHandlerErrors.ERR1); - } - this.ethereum = window.ethereum; - this.provider = new BrowserProvider(window.ethereum); - } - - async requestAddress(chainInfo: ChainInfo): - Promise> { - await this.provider.send('wallet_addEthereumChain', [ - chainInfo, - ]); - await this.provider.send('wallet_switchEthereumChain', [ - { chainId: chainInfo.chainId }, - ]); - const accounts: string[] = await this.provider.send('eth_requestAccounts', []); - if (!accounts[0]) throw new Error(MetamaskHandlerErrors.ERR2); - return accounts[0]; - } - - /** - * This function is different from {@link requestAddress} in that it - * only returns the addresses if the current site is already connected. - * It does not attempt to connect the current site to Metamask, like - * {@link requestAddress} does - */ - async getActiveAddress(): Promise { - const accounts = await this.provider.send('eth_accounts', []); - const activeAddress = accounts[0] || null; - return activeAddress; - } -} diff --git a/web-app/infra/.env..sample b/web-app/infra/.env..sample new file mode 100644 index 0000000..4ac9322 --- /dev/null +++ b/web-app/infra/.env..sample @@ -0,0 +1,13 @@ +# App env vars +STAKING_CONTRACT_ADDRESS="" +STAKING_TOKEN_ADDRESS="" +REWARD_TOKEN_ADDRESS="" +PRODUCTION_CHAIN_INFO='{"iconUrls":[],"nativeCurrency":{"name":"xANV","symbol":"xANV","decimals":18},"rpcUrls":["http://localhost:8545"],"chainId":"0x7a69","chainName":"Anvil", "blockExplorerUrls": ["https://mumbai.polygonscan.com"]}' +BLOCK_EXPLORER_TX_URL="" +BLOCK_EXPLORER_ADDRESS_URL="" +STATIC_CACHE_TIME_IN_S="" +RPC_QUERY_MAX_BLOCK_COUNT="" + +# custom domain env variables +APP_CUSTOM_DOMAIN_NAME="" +APP_CUSTOM_DOMAIN_CERT_ARN="" \ No newline at end of file diff --git a/web-app/infra/.eslintrc.cjs b/web-app/infra/.eslintrc.cjs new file mode 100644 index 0000000..27f096d --- /dev/null +++ b/web-app/infra/.eslintrc.cjs @@ -0,0 +1,23 @@ +// .eslintrc.js +/** @type {import('eslint').Linter.Config} */ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + plugins: [ + '@stylistic', + '@typescript-eslint', + ], + extends: [ + 'plugin:@stylistic/recommended-extends', + ], + parser: '@typescript-eslint/parser', + rules: { + '@stylistic/semi': ['error', 'always'], + '@stylistic/max-len': ['error', { code: 80, ignoreStrings: true }], + '@stylistic/array-bracket-newline': ['error', 'consistent'], + '@stylistic/array-element-newline': ['error', 'consistent'], + }, +}; diff --git a/web-app/infra/.gitignore b/web-app/infra/.gitignore new file mode 100644 index 0000000..39808c5 --- /dev/null +++ b/web-app/infra/.gitignore @@ -0,0 +1,9 @@ +*.js +!jest.config.js +*.d.ts +node_modules +.env + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/web-app/infra/.npmignore b/web-app/infra/.npmignore new file mode 100644 index 0000000..c1d6d45 --- /dev/null +++ b/web-app/infra/.npmignore @@ -0,0 +1,6 @@ +*.ts +!*.d.ts + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/web-app/infra/README.md b/web-app/infra/README.md new file mode 100644 index 0000000..9315fe5 --- /dev/null +++ b/web-app/infra/README.md @@ -0,0 +1,14 @@ +# Welcome to your CDK TypeScript project + +This is a blank project for CDK development with TypeScript. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +## Useful commands + +* `npm run build` compile typescript to js +* `npm run watch` watch for changes and compile +* `npm run test` perform the jest unit tests +* `npx cdk deploy` deploy this stack to your default AWS account/region +* `npx cdk diff` compare deployed stack with current state +* `npx cdk synth` emits the synthesized CloudFormation template diff --git a/web-app/infra/bin/infra.ts b/web-app/infra/bin/infra.ts new file mode 100644 index 0000000..cba641a --- /dev/null +++ b/web-app/infra/bin/infra.ts @@ -0,0 +1,10 @@ +#!/usr/bin/env node +import 'source-map-support/register'; +import * as cdk from 'aws-cdk-lib'; +import { InfraStack } from '../lib/infra-stack'; + +const app = new cdk.App(); +new InfraStack(app, 'Finthetix-Stack', { + env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: 'ap-south-1' }, +}); +cdk.Tags.of(app).add('project', 'finthetix'); diff --git a/web-app/infra/cdk.json b/web-app/infra/cdk.json new file mode 100644 index 0000000..bcffc26 --- /dev/null +++ b/web-app/infra/cdk.json @@ -0,0 +1,67 @@ +{ + "app": "tsx bin/infra.ts", + "watch": { + "include": [ + "**" + ], + "exclude": [ + "README.md", + "cdk*.json", + "**/*.d.ts", + "**/*.js", + "tsconfig.json", + "package*.json", + "yarn.lock", + "node_modules", + "test" + ] + }, + "context": { + "@aws-cdk/aws-lambda:recognizeLayerVersion": true, + "@aws-cdk/core:checkSecretUsage": true, + "@aws-cdk/core:target-partitions": [ + "aws", + "aws-cn" + ], + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, + "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true, + "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true, + "@aws-cdk/aws-iam:minimizePolicies": true, + "@aws-cdk/core:validateSnapshotRemovalPolicy": true, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true, + "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true, + "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": true, + "@aws-cdk/core:enablePartitionLiterals": true, + "@aws-cdk/aws-events:eventsTargetQueueSameAccount": true, + "@aws-cdk/aws-iam:standardizedServicePrincipals": true, + "@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker": true, + "@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName": true, + "@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy": true, + "@aws-cdk/aws-route53-patters:useCertificate": true, + "@aws-cdk/customresources:installLatestAwsSdkDefault": false, + "@aws-cdk/aws-rds:databaseProxyUniqueResourceName": true, + "@aws-cdk/aws-codedeploy:removeAlarmsFromDeploymentGroup": true, + "@aws-cdk/aws-apigateway:authorizerChangeDeploymentLogicalId": true, + "@aws-cdk/aws-ec2:launchTemplateDefaultUserData": true, + "@aws-cdk/aws-secretsmanager:useAttachedSecretResourcePolicyForSecretTargetAttachments": true, + "@aws-cdk/aws-redshift:columnId": true, + "@aws-cdk/aws-stepfunctions-tasks:enableEmrServicePolicyV2": true, + "@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": true, + "@aws-cdk/aws-apigateway:requestValidatorUniqueId": true, + "@aws-cdk/aws-kms:aliasNameRef": true, + "@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true, + "@aws-cdk/core:includePrefixInUniqueNameGeneration": true, + "@aws-cdk/aws-efs:denyAnonymousAccess": true, + "@aws-cdk/aws-opensearchservice:enableOpensearchMultiAzWithStandby": true, + "@aws-cdk/aws-lambda-nodejs:useLatestRuntimeVersion": true, + "@aws-cdk/aws-efs:mountTargetOrderInsensitiveLogicalId": true, + "@aws-cdk/aws-rds:auroraClusterChangeScopeOfInstanceParameterGroupWithEachParameters": true, + "@aws-cdk/aws-appsync:useArnForSourceApiAssociationIdentifier": true, + "@aws-cdk/aws-rds:preventRenderingDeprecatedCredentials": true, + "@aws-cdk/aws-codepipeline-actions:useNewDefaultBranchForCodeCommitSource": true, + "@aws-cdk/aws-cloudwatch-actions:changeLambdaPermissionLogicalIdForLambdaAction": true, + "@aws-cdk/aws-codepipeline:crossAccountKeysDefaultValueToFalse": true, + "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true + } +} \ No newline at end of file diff --git a/web-app/infra/lib/infra-stack.ts b/web-app/infra/lib/infra-stack.ts new file mode 100644 index 0000000..60c2407 --- /dev/null +++ b/web-app/infra/lib/infra-stack.ts @@ -0,0 +1,57 @@ +import * as cdk from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import path = require('node:path'); +import parsedEnv from './utils/env'; +import WebAppServerLambda from './lib/WebAppServerLambda'; +import WebAppBucket from './lib/WebAppBucket'; +import WebAppCdn from './lib/WebAppCdn'; + +// lambda files +const LOCAL_PATH_TO_WEB_APP_DIR = path.join(__dirname, '../../src/'); +const LOCAL_PATH_TO_WEB_APP_LAMBDA_CODE_DIR = path.join(LOCAL_PATH_TO_WEB_APP_DIR, './dist/'); + +// static asset files +/** The folder in s3 inside which you want to put your static build assets */ +const WEB_APP_BUILD_ASSETS_S3_DIR = 'static'; +const LOCAL_PATH_TO_WEB_APP_BUILD_ASSETS = path.join(LOCAL_PATH_TO_WEB_APP_DIR, './public/'); + +export class InfraStack extends cdk.Stack { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + const webAppServerLambda = new WebAppServerLambda(this, 'web-app-lambda-construct', { + absolutePathToCode: LOCAL_PATH_TO_WEB_APP_LAMBDA_CODE_DIR, + }); + + const webAppBucket = new WebAppBucket(this, 'web-app-bucket'); + + const webAppCdn = new WebAppCdn(this, 'web-app-cdn', { + webAppServerLambdaFunctionUrl: webAppServerLambda.fnUrl, + buildAssetsS3Dir: WEB_APP_BUILD_ASSETS_S3_DIR, + buildAssetsS3Bucket: webAppBucket.bucket, + }); + + webAppBucket.deployStaticAssets({ + pathToAssets: LOCAL_PATH_TO_WEB_APP_BUILD_ASSETS, + destinationKeyPrefix: WEB_APP_BUILD_ASSETS_S3_DIR, + cdnDistribution: webAppCdn.distribution, + }); + + new cdk.CfnOutput(this, 'cdn-final-url', { + value: `https://${webAppCdn.distribution.domainName}`, + description: 'The Cloudfront URL where you can access the app.', + }); + new cdk.CfnOutput(this, 'app-final-url', { + value: `https://${parsedEnv.APP_CUSTOM_DOMAIN_NAME}`, + description: 'The App URL where you can access the app.', + }); + new cdk.CfnOutput(this, 'lambda-url', { + value: webAppServerLambda.fnUrl.url, + description: 'The URL where the lambda function is hosted', + }); + new cdk.CfnOutput(this, 'app-s3-url', { + value: webAppBucket.bucket.bucketDomainName, + description: 'The URL of the S3 bucket where the app assets are hosted', + }); + } +} diff --git a/web-app/infra/lib/lib/WebAppBucket.ts b/web-app/infra/lib/lib/WebAppBucket.ts new file mode 100644 index 0000000..2cffb57 --- /dev/null +++ b/web-app/infra/lib/lib/WebAppBucket.ts @@ -0,0 +1,55 @@ +import { Construct } from 'constructs'; +import * as S3 from 'aws-cdk-lib/aws-s3'; +import * as S3Deployment from 'aws-cdk-lib/aws-s3-deployment'; +import * as Cloudfront from 'aws-cdk-lib/aws-cloudfront'; +import * as cdk from 'aws-cdk-lib'; +import parsedEnv from '../utils/env'; + +export default class WebAppBucket extends Construct { + public readonly bucket: S3.Bucket; + + constructor(scope: Construct, id: string) { + super(scope, id); + const { stackName } = cdk.Stack.of(this); + + this.bucket = new S3.Bucket(this, 'bucket', { + bucketName: `${stackName.toLowerCase()}-web-app`, + encryption: S3.BucketEncryption.S3_MANAGED, + autoDeleteObjects: true, + enforceSSL: true, + minimumTLSVersion: 1.2, + accessControl: S3.BucketAccessControl.PRIVATE, + blockPublicAccess: new S3.BlockPublicAccess({ + blockPublicAcls: false, + blockPublicPolicy: false, + ignorePublicAcls: false, + restrictPublicBuckets: false, + }), + removalPolicy: cdk.RemovalPolicy.DESTROY, + objectOwnership: S3.ObjectOwnership.BUCKET_OWNER_ENFORCED, + cors: [{ + allowedMethods: [S3.HttpMethods.GET], + allowedOrigins: ['*'], + maxAge: parsedEnv.STATIC_CACHE_TIME_IN_S, + }], + }); + } + + deployStaticAssets( + { pathToAssets, destinationKeyPrefix, cdnDistribution }: + { + pathToAssets: string + destinationKeyPrefix: string + cdnDistribution: Cloudfront.Distribution + }, + ) { + new S3Deployment.BucketDeployment(this, 'build-assets', { + destinationBucket: this.bucket, + sources: [S3Deployment.Source.asset(pathToAssets)], + destinationKeyPrefix, + prune: true, + retainOnDelete: false, + distribution: cdnDistribution, + }); + } +} diff --git a/web-app/infra/lib/lib/WebAppCdn.ts b/web-app/infra/lib/lib/WebAppCdn.ts new file mode 100644 index 0000000..a657cb0 --- /dev/null +++ b/web-app/infra/lib/lib/WebAppCdn.ts @@ -0,0 +1,68 @@ +import * as cdk from 'aws-cdk-lib'; +import * as ACM from 'aws-cdk-lib/aws-certificatemanager'; +import * as Cloudfront from 'aws-cdk-lib/aws-cloudfront'; +import * as Lambda from 'aws-cdk-lib/aws-lambda'; +import * as S3 from 'aws-cdk-lib/aws-s3'; +import * as CloudfrontOrigins from 'aws-cdk-lib/aws-cloudfront-origins'; +import { Construct } from 'constructs'; +import parsedEnv from '../utils/env'; + +type Props = { + webAppServerLambdaFunctionUrl: Lambda.FunctionUrl + buildAssetsS3Dir: string + buildAssetsS3Bucket: S3.Bucket +}; + +export default class WebAppCdn extends Construct { + public readonly distribution: Cloudfront.Distribution; + + constructor(scope: Construct, id: string, props: Props) { + super(scope, id); + + this.distribution = new Cloudfront.Distribution(this, 'cdn', { + domainNames: [parsedEnv.APP_CUSTOM_DOMAIN_NAME], + certificate: this.customDomainCert, + defaultBehavior: + this.makeAppEndpointBehaviour(props.webAppServerLambdaFunctionUrl), + + additionalBehaviors: { + [`/${props.buildAssetsS3Dir}/*`]: + this.makeStaticAssetsEndpointBehaviour(props.buildAssetsS3Bucket), + }, + }); + } + + private get customDomainCert() { + return ACM.Certificate.fromCertificateArn( + this, + 'custom-domain-cert', + parsedEnv.APP_CUSTOM_DOMAIN_CERT_ARN); + } + + private makeAppEndpointBehaviour(functionUrl: Lambda.FunctionUrl) { + return { + origin: new CloudfrontOrigins.FunctionUrlOrigin(functionUrl), + allowedMethods: Cloudfront.AllowedMethods.ALLOW_ALL, + cachePolicy: new Cloudfront.CachePolicy(this, 'cache-policy-for-app-server', { + comment: 'Allows the origin server to set the cache behaviour', + defaultTtl: cdk.Duration.seconds(0), + minTtl: cdk.Duration.seconds(0), + // maxTtl will be default i.e 1 year + enableAcceptEncodingGzip: true, + enableAcceptEncodingBrotli: true, + queryStringBehavior: Cloudfront.CacheQueryStringBehavior.all(), + }), + originRequestPolicy: + Cloudfront.OriginRequestPolicy.ALL_VIEWER_EXCEPT_HOST_HEADER, + viewerProtocolPolicy: Cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + }; + } + + private makeStaticAssetsEndpointBehaviour(staticAssetsBucket: S3.Bucket) { + return { + origin: new CloudfrontOrigins.S3Origin(staticAssetsBucket), + cachePolicy: Cloudfront.CachePolicy.CACHING_OPTIMIZED, + viewerProtocolPolicy: Cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, + }; + } +} diff --git a/web-app/infra/lib/lib/WebAppServerLambda.ts b/web-app/infra/lib/lib/WebAppServerLambda.ts new file mode 100644 index 0000000..358f38c --- /dev/null +++ b/web-app/infra/lib/lib/WebAppServerLambda.ts @@ -0,0 +1,49 @@ +import { Construct } from 'constructs'; +import * as Lambda from 'aws-cdk-lib/aws-lambda'; +import * as cdk from 'aws-cdk-lib'; +import parsedEnv from '../utils/env'; +import { z } from 'zod'; +import { envSchema as appEnvSchema } from '../../../src/app/lib/env/schema'; + +type AppEnv = z.infer; + +type Props = { + absolutePathToCode: string +}; + +const lambdaEnv = { + NODE_ENV: 'production', + PRODUCTION_CHAIN_INFO: JSON.stringify(parsedEnv.PRODUCTION_CHAIN_INFO), + STAKING_TOKEN_ADDRESS: parsedEnv.STAKING_TOKEN_ADDRESS, + STAKING_CONTRACT_ADDRESS: parsedEnv.STAKING_CONTRACT_ADDRESS, + REWARD_TOKEN_ADDRESS: parsedEnv.REWARD_TOKEN_ADDRESS, + STATIC_CACHE_TIME_IN_S: + JSON.stringify(parsedEnv.STATIC_CACHE_TIME_IN_S), + BLOCK_EXPLORER_ADDRESS_URL: parsedEnv.BLOCK_EXPLORER_ADDRESS_URL, + BLOCK_EXPLORER_TX_URL: parsedEnv.BLOCK_EXPLORER_TX_URL, + RPC_QUERY_MAX_BLOCK_COUNT: + JSON.stringify(parsedEnv.RPC_QUERY_MAX_BLOCK_COUNT), +} satisfies { + [k in keyof AppEnv]: + AppEnv extends object ? string : string | undefined +}; + +export default class WebAppServerLambda extends Construct { + public readonly fnUrl: Lambda.FunctionUrl; + + constructor(scope: Construct, id: string, props: Props) { + super(scope, id); + + const appLambda = new Lambda.Function(this, 'lambda', { + code: Lambda.Code.fromAsset(props.absolutePathToCode), + handler: 'lambda.handler', + runtime: Lambda.Runtime.NODEJS_20_X, + environment: lambdaEnv, + timeout: cdk.Duration.seconds(15), + }); + + this.fnUrl = appLambda.addFunctionUrl({ + authType: Lambda.FunctionUrlAuthType.NONE, + }); + } +} diff --git a/web-app/infra/lib/utils/env.ts b/web-app/infra/lib/utils/env.ts new file mode 100644 index 0000000..6cd8dee --- /dev/null +++ b/web-app/infra/lib/utils/env.ts @@ -0,0 +1,31 @@ +import { envSchema as appEnvSchema } from '../../../src/app/lib/env/schema'; +import { z } from 'zod'; + +const { + NODE_ENV, // NODE_ENV is always 'production' when deploying + ...appEnvSchemaPassedAsInfraEnv +} = appEnvSchema.shape; + +const envSchema = z.object({ + ...appEnvSchemaPassedAsInfraEnv, + + // custom domain env variables + /** + * The custom domain where your app is to be accessible. + * After deployment, you create this as a CNAME record pointing + * to the obtained cloudfront domain name, on your DNS + */ + APP_CUSTOM_DOMAIN_NAME: z.string().trim().min(1), + + /** + * The ARN for your custom domain SSL certificate. + * You need to manually provision this in N.Virginia AWS zone, + * do the required validation on the DNS side, + * and then provide the ARN here. + */ + APP_CUSTOM_DOMAIN_CERT_ARN: z.string().startsWith('arn:aws:acm:us-east-1:'), +}); + +const parsedEnv = envSchema.parse(process.env); + +export default parsedEnv; diff --git a/web-app/infra/package-lock.json b/web-app/infra/package-lock.json new file mode 100644 index 0000000..35ffeae --- /dev/null +++ b/web-app/infra/package-lock.json @@ -0,0 +1,2972 @@ +{ + "name": "infra", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "infra", + "version": "0.1.0", + "hasInstallScript": true, + "dependencies": { + "aws-cdk-lib": "2.133.0", + "constructs": "^10.0.0", + "source-map-support": "^0.5.21", + "tsx": "^4.7.1", + "zod": "^3.22.4" + }, + "bin": { + "infra": "bin/infra.js" + }, + "devDependencies": { + "@stylistic/eslint-plugin": "^1.7.0", + "@types/node": "20.11.19", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", + "aws-cdk": "2.133.0", + "env-cmd": "^10.1.0", + "eslint": "^8.57.0", + "typescript": "~5.3.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@aws-cdk/asset-awscli-v1": { + "version": "2.2.202", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.202.tgz", + "integrity": "sha512-JqlF0D4+EVugnG5dAsNZMqhu3HW7ehOXm5SDMxMbXNDMdsF0pxtQKNHRl52z1U9igsHmaFpUgSGjbhAJ+0JONg==" + }, + "node_modules/@aws-cdk/asset-kubectl-v20": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.2.tgz", + "integrity": "sha512-3M2tELJOxQv0apCIiuKQ4pAbncz9GuLwnKFqxifWfe77wuMxyTRPmxssYHs42ePqzap1LT6GDcPygGs+hHstLg==" + }, + "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz", + "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.7.0.tgz", + "integrity": "sha512-ThMUjGIi/jeWYNvOdjZkoLw1EOVs0tEuKXDgWvTn8uWaEz55HuPlajKxjKLpv19C+qRDbKczJfzUODfCdME53A==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.7.0", + "@stylistic/eslint-plugin-jsx": "1.7.0", + "@stylistic/eslint-plugin-plus": "1.7.0", + "@stylistic/eslint-plugin-ts": "1.7.0", + "@types/eslint": "^8.56.2" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.7.0.tgz", + "integrity": "sha512-PN6On/+or63FGnhhMKSQfYcWutRlzOiYlVdLM6yN7lquoBTqUJHYnl4TA4MHwiAt46X5gRxDr1+xPZ1lOLcL+Q==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.2", + "acorn": "^8.11.3", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.7.0.tgz", + "integrity": "sha512-BACdBwXakQvjYIST5N2WWhRbvhRsIxa/F59BiZol+0IH4FSmDXhie7v/yaxDIIA9CbfElzOmIA5nWNYTVXcnwQ==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^1.7.0", + "@types/eslint": "^8.56.2", + "estraverse": "^5.3.0", + "picomatch": "^4.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.7.0.tgz", + "integrity": "sha512-AabDw8sXsc70Ydx3qnbeTlRHZnIwY6UKEenBPURPhY3bfYWX+/pDpZH40HkOu94v8D0DUrocPkeeEUxl4e0JDg==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.2", + "@typescript-eslint/utils": "^6.21.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.7.0.tgz", + "integrity": "sha512-QsHv98mmW1xaucVYQTyLDgEpybPJ/6jPPxVBrIchntWWwj74xCWKUiw79hu+TpYj/Pbhd9rkqJYLNq3pQGYuyA==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "1.7.0", + "@types/eslint": "^8.56.2", + "@typescript-eslint/utils": "^6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", + "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", + "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/type-utils": "7.3.1", + "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", + "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", + "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.3.1", + "@typescript-eslint/utils": "7.3.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", + "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", + "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", + "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/visitor-keys": "7.3.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", + "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.3.1", + "@typescript-eslint/types": "7.3.1", + "@typescript-eslint/typescript-estree": "7.3.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", + "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.3.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.133.0.tgz", + "integrity": "sha512-EwH8VgQQ8ODeMwjE3p+WhbcbWNkCbvuJJl+Py9IB5znGf7GwLcEmOu4YWBsBGPVu41SXbSAf36twMBrJytCFZA==", + "dev": true, + "bin": { + "cdk": "bin/cdk" + }, + "engines": { + "node": ">= 14.15.0" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/aws-cdk-lib": { + "version": "2.133.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.133.0.tgz", + "integrity": "sha512-5/ezv8Ir2xyz3myeXQcODwrjVRN/cDD2OpBwU/ySFBe+uNac25OoHfTXwUPwE7oLj9qetSt6/i1QvY2iIs6yiQ==", + "bundleDependencies": [ + "@balena/dockerignore", + "case", + "fs-extra", + "ignore", + "jsonschema", + "minimatch", + "punycode", + "semver", + "table", + "yaml", + "mime-types" + ], + "dependencies": { + "@aws-cdk/asset-awscli-v1": "^2.2.202", + "@aws-cdk/asset-kubectl-v20": "^2.1.2", + "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1", + "@balena/dockerignore": "^1.0.2", + "case": "1.6.3", + "fs-extra": "^11.2.0", + "ignore": "^5.3.1", + "jsonschema": "^1.4.1", + "mime-types": "^2.1.35", + "minimatch": "^3.1.2", + "punycode": "^2.3.1", + "semver": "^7.6.0", + "table": "^6.8.1", + "yaml": "1.10.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "constructs": "^10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { + "version": "1.0.2", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/aws-cdk-lib/node_modules/ajv": { + "version": "8.12.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/astral-regex": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/aws-cdk-lib/node_modules/case": { + "version": "1.6.3", + "inBundle": true, + "license": "(MIT OR GPL-3.0-or-later)", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/fs-extra": { + "version": "11.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/aws-cdk-lib/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/ignore": { + "version": "5.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/jsonfile": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/jsonschema": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/aws-cdk-lib/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-db": { + "version": "1.52.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/mime-types": { + "version": "2.1.35", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aws-cdk-lib/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/aws-cdk-lib/node_modules/punycode": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/aws-cdk-lib/node_modules/require-from-string": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aws-cdk-lib/node_modules/slice-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/aws-cdk-lib/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-cdk-lib/node_modules/table": { + "version": "6.8.1", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/universalify": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/aws-cdk-lib/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/aws-cdk-lib/node_modules/yaml": { + "version": "1.10.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/constructs": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.3.0.tgz", + "integrity": "sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==", + "engines": { + "node": ">= 16.14.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/env-cmd": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", + "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", + "dev": true, + "dependencies": { + "commander": "^4.0.0", + "cross-spawn": "^7.0.0" + }, + "bin": { + "env-cmd": "bin/env-cmd.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "dependencies": { + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/web-app/infra/package.json b/web-app/infra/package.json new file mode 100644 index 0000000..55158e3 --- /dev/null +++ b/web-app/infra/package.json @@ -0,0 +1,36 @@ +{ + "name": "infra", + "version": "0.1.0", + "bin": { + "infra": "bin/infra.js" + }, + "scripts": { + "preinstall": "cd ../src && npm ci", + "prebuild": "cd ../src && npm run build", + "build": "env-cmd -f .env cdk synth -q", + "predeploy": "npm run build", + "predeploy:ci": "npm run build", + "deploy": "env-cmd -f .env cdk deploy", + "deploy:ci": "env-cmd -f .env cdk deploy --require-approval never", + "undeploy": "env-cmd -f .env cdk destroy", + "lint": "eslint . --ext '.ts' --ignore-path .gitignore", + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "@stylistic/eslint-plugin": "^1.7.0", + "@types/node": "20.11.19", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", + "aws-cdk": "2.133.0", + "env-cmd": "^10.1.0", + "eslint": "^8.57.0", + "typescript": "~5.3.3" + }, + "dependencies": { + "aws-cdk-lib": "2.133.0", + "constructs": "^10.0.0", + "source-map-support": "^0.5.21", + "tsx": "^4.7.1", + "zod": "^3.22.4" + } +} \ No newline at end of file diff --git a/web-app/infra/tsconfig.json b/web-app/infra/tsconfig.json new file mode 100644 index 0000000..db6d6e1 --- /dev/null +++ b/web-app/infra/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "lib": [ + "es2020", + "dom" + ], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUncheckedIndexedAccess": true, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "typeRoots": [ + "./node_modules/@types" + ] + }, + "exclude": [ + "node_modules", + "cdk.out" + ] +} \ No newline at end of file diff --git a/web-app/public/favicon.ico b/web-app/public/favicon.ico deleted file mode 100644 index 8830cf6..0000000 Binary files a/web-app/public/favicon.ico and /dev/null differ diff --git a/web-app/remix.env.d.ts b/web-app/remix.env.d.ts deleted file mode 100644 index 9bf40e2..0000000 --- a/web-app/remix.env.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// -/// - -type AccountsChangedEventName = 'accountsChanged'; - -interface Window { - ethereum?: - import('ethers').Eip1193Provider & { - on: ( - eventName: AccountsChangedEventName, - callbackFn: (lastActiveAddresses: string[]) => void - ) => void - off: ( - eventName: AccountsChangedEventName, - callbackFn: (lastActiveAddresses: string[]) => void - ) => void - } -} diff --git a/web-app/src/.env.sample b/web-app/src/.env.sample new file mode 100644 index 0000000..b081f25 --- /dev/null +++ b/web-app/src/.env.sample @@ -0,0 +1,8 @@ +STAKING_CONTRACT_ADDRESS="" +STAKING_TOKEN_ADDRESS="" +REWARD_TOKEN_ADDRESS="" +PRODUCTION_CHAIN_INFO='{"iconUrls":[],"nativeCurrency":{"name":"xANV","symbol":"xANV","decimals":18},"rpcUrls":["http://localhost:8545"],"chainId":"0x7a69","chainName":"Anvil", "blockExplorerUrls":["https://etherscan.io/"]}' +BLOCK_EXPLORER_TX_URL="https://etherscan.io/tx/" +BLOCK_EXPLORER_ADDRESS_URL="https://etherscan.io/address/" +STATIC_CACHE_TIME_IN_S="60" +RPC_QUERY_MAX_BLOCK_COUNT="2" \ No newline at end of file diff --git a/web-app/.eslintrc.cjs b/web-app/src/.eslintrc.cjs similarity index 97% rename from web-app/.eslintrc.cjs rename to web-app/src/.eslintrc.cjs index 6b026cf..91d88c7 100644 --- a/web-app/.eslintrc.cjs +++ b/web-app/src/.eslintrc.cjs @@ -83,7 +83,7 @@ module.exports = { // Node { - files: ['.eslintrc.js'], + files: ['.eslintrc.js', 'scripts/**/*.{c,}js'], env: { node: true, }, diff --git a/web-app/.gitignore b/web-app/src/.gitignore similarity index 92% rename from web-app/.gitignore rename to web-app/src/.gitignore index f424f49..eb28ebd 100644 --- a/web-app/.gitignore +++ b/web-app/src/.gitignore @@ -2,6 +2,7 @@ node_modules /.cache /build +dist/ /public/build .env *.dev.* diff --git a/web-app/src/README.md b/web-app/src/README.md new file mode 100644 index 0000000..048ab76 --- /dev/null +++ b/web-app/src/README.md @@ -0,0 +1,48 @@ +# Finthetix Web App + +## Development Server +### Step 1: Deploy in Local Anvil Chain +You need a local anvil chain running for development purposes. First start the chain by +```sh +$ anvil +``` +Then deploy the contracts. Be sure to install make if you don't already have it on your system. +```sh +$ sudo apt install make #optional +/contracts$ make deploy-dev +``` + +You will receive the deployed contract addresses in the CLI output +> == Return == +> +> stakingTokenAddr: address 0x5FbDB2315678afecb367f032d93F642f64180aa3 +> stakingContractAddr: address 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 +> rewardTokenAddr: address 0xCafac3dD18aC6c6e92c921884f9E4176737C052c + +Copy these to the _web-app/src/.env_ as per the next step. + +### Step 2: Env vars +Add the env variables, for the app to function properly. + +The `PRODUCTION_CHAIN_INFO` is not a necessity in development server, as we hardcode the anvil chain for `NODE_ENV="development"`. But the smart contract addresses obtained after deploying the smart contract + +The block explorer related env variables are only used for rendering links, not any computation. So you may use dummy values in development. + +### Step 3: Start server +Run the following command to start the dev server +```sh +/web-app/src$ npm run dev +``` + +## Production Server +The current production environment is a lambda hosting an express server, on which Remix is a handler on an endpoint. This is as per the official express-adapter for Remix + +### Running locally +You can optionally run the express server locally, so that you can interact with the production smart contract. In production mode, the `PRODUCTION_CHAIN_INFO` environment variable is picked up, instead of the hardcoded anvil chain. + +To start the server run +```sh +/web-app/src$ npm run start +``` + +For actual production use, we use an express server mounted on a lambda handler. For running this setup locally, we just start the express server as a standalone server using `app.listen(3000)` \ No newline at end of file diff --git a/web-app/app/components/root/AutoLogin/index.tsx b/web-app/src/app/components/root/AutoLogin/index.tsx similarity index 81% rename from web-app/app/components/root/AutoLogin/index.tsx rename to web-app/src/app/components/root/AutoLogin/index.tsx index c4b7648..783185a 100644 --- a/web-app/app/components/root/AutoLogin/index.tsx +++ b/web-app/src/app/components/root/AutoLogin/index.tsx @@ -1,4 +1,10 @@ -import { selectActiveAddress, selectIsUserFromLocalStorage, setActiveAddress, setIsUserLoading } from '~/redux/features/user/slice'; +import { + selectActiveAddress, + selectIsUserFromLocalStorage, + selectIsUserLoggedIn, + setActiveAddress, + setIsUserLoading, +} from '~/redux/features/user/slice'; import { useEffect } from 'react'; import { useRefreshActiveMetamaskAddressMutation } from '~/redux/services/metamask'; import { useAppDispatch, useAppSelector } from '~/redux/hooks'; @@ -37,11 +43,15 @@ function useRefreshAddressWhenAutoLoggedIn() { /** Change account automatically when user changes on metamask */ function useAutoAccountSwitch() { + const isUserLoggedIn = useAppSelector(selectIsUserLoggedIn); const [refreshActiveMetamaskAddress] = useRefreshActiveMetamaskAddressMutation(); const dispatch = useAppDispatch(); useEffect(() => { + // don't set up the account change handler until user is logged in + if (!isUserLoggedIn) return; + const metamask = new MetamaskHandler(); const refreshAddress = (lastActiveAddresses: string[]) => { const newAddress = lastActiveAddresses[0]; @@ -53,5 +63,5 @@ function useAutoAccountSwitch() { return () => { metamask.ethereum.off('accountsChanged', refreshAddress); }; - }, [dispatch, refreshActiveMetamaskAddress]); + }, [dispatch, refreshActiveMetamaskAddress, isUserLoggedIn]); } diff --git a/web-app/src/app/components/root/BrowserEnv/index.tsx b/web-app/src/app/components/root/BrowserEnv/index.tsx new file mode 100644 index 0000000..aa6ea43 --- /dev/null +++ b/web-app/src/app/components/root/BrowserEnv/index.tsx @@ -0,0 +1,63 @@ +import { z } from 'zod'; +import { envSchema } from '~/lib/env/schema'; +import useRootLoaderData from '~/lib/hooks/useRootLoaderData'; +import { BlockExplorerInfo, blockExplorerInfoSchema } from '~/lib/loaders/blockExplorerInfo/schema'; +import { ChainInfo, chainInfoSchema } from '~/lib/loaders/chainInfo/schema'; +import { DappInfo, dappInfoSchema } from '~/lib/loaders/dappInfo/schema'; + +type EnvVars = { + chainInfo: ChainInfo + dappInfo: DappInfo + blockExplorerInfo: BlockExplorerInfo + rpcQueryMaxBlockCount: z.infer +}; + +const browserEnvVarsSchema = z.object({ + chainInfo: chainInfoSchema, + dappInfo: dappInfoSchema, + blockExplorerInfo: blockExplorerInfoSchema, + rpcQueryMaxBlockCount: envSchema.shape.RPC_QUERY_MAX_BLOCK_COUNT, +}) satisfies z.ZodType; + +const ENV_VAR_KEY_ON_WINDOW_OBJ = 'ENV'; + +export default function BrowserEnv() { + const { + chainInfo, + dappInfo, + blockExplorerInfo, + rpcQueryMaxBlockCount, + } = useRootLoaderData(); + + const envVars: EnvVars = { + chainInfo, + dappInfo, + blockExplorerInfo, + rpcQueryMaxBlockCount, + }; + + return ( +