@aztec/key-store 0.1.0-alpha13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +1 -0
- package/.tsbuildinfo +1 -0
- package/README.md +3 -0
- package/dest/index.d.ts +4 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +4 -0
- package/dest/key_pair.d.ts +52 -0
- package/dest/key_pair.d.ts.map +1 -0
- package/dest/key_pair.js +55 -0
- package/dest/key_store.d.ts +15 -0
- package/dest/key_store.d.ts.map +1 -0
- package/dest/key_store.js +2 -0
- package/dest/test_key_store.d.ts +54 -0
- package/dest/test_key_store.d.ts.map +1 -0
- package/dest/test_key_store.js +71 -0
- package/package.json +12 -0
- package/src/index.ts +3 -0
- package/src/key_pair.ts +66 -0
- package/src/key_store.ts +15 -0
- package/src/test_key_store.ts +77 -0
- package/tsconfig.json +20 -0
package/.eslintrc.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('@aztec/foundation/eslint');
|
package/.tsbuildinfo
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../@types/jest/index.d.ts","../node_modules/tslib/tslib.d.ts","../node_modules/tslib/modules/index.d.ts","../circuits.js/dest/barretenberg/crs/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/buffer/index.d.ts","../foundation/dest/log/debug.d.ts","../foundation/dest/transport/dispatch/create_dispatch_fn.d.ts","../foundation/dest/transport/interface/socket.d.ts","../foundation/dest/transport/interface/connector.d.ts","../foundation/dest/transport/transport_client.d.ts","../foundation/dest/transport/interface/transferable.d.ts","../foundation/dest/transport/dispatch/create_dispatch_proxy.d.ts","../foundation/dest/transport/dispatch/messages.d.ts","../foundation/dest/transport/interface/listener.d.ts","../foundation/dest/transport/transport_server.d.ts","../foundation/dest/transport/browser/message_port_socket.d.ts","../foundation/dest/transport/browser/worker_connector.d.ts","../foundation/dest/transport/browser/worker_listener.d.ts","../foundation/dest/transport/browser/shared_worker_connector.d.ts","../foundation/dest/transport/browser/shared_worker_listener.d.ts","../foundation/dest/transport/browser/index.d.ts","../foundation/dest/transport/node/node_connector_socket.d.ts","../foundation/dest/transport/node/node_connector.d.ts","../foundation/dest/transport/node/node_listener.d.ts","../foundation/dest/transport/node/index.d.ts","../foundation/dest/transport/index.d.ts","../foundation/dest/log/console.d.ts","../foundation/dest/log/log_history.d.ts","../foundation/dest/log/index.d.ts","../foundation/dest/wasm/wasm/wasm_module.d.ts","../foundation/dest/wasm/worker/wasm_worker.d.ts","../foundation/dest/wasm/worker/browser/web_worker.d.ts","../foundation/dest/wasm/worker/data_store.d.ts","../foundation/dest/wasm/worker/browser/web_data_store.d.ts","../foundation/dest/wasm/worker/browser/index.d.ts","../foundation/dest/wasm/worker/node/node_worker.d.ts","../foundation/dest/wasm/worker/node/node_data_store.d.ts","../foundation/dest/wasm/worker/node/index.d.ts","../foundation/dest/wasm/worker/worker_pool.d.ts","../foundation/dest/wasm/worker/index.d.ts","../foundation/dest/wasm/wasm/index.d.ts","../foundation/dest/wasm/index.d.ts","../circuits.js/dest/barretenberg/crypto/aes128/index.d.ts","../circuits.js/dest/barretenberg/crypto/grumpkin/index.d.ts","../circuits.js/dest/barretenberg/crypto/pedersen/pedersen.d.ts","../circuits.js/dest/barretenberg/crypto/pedersen/index.d.ts","../foundation/dest/serialize/types.d.ts","../foundation/dest/serialize/buffer_reader.d.ts","../foundation/dest/fields/fields.d.ts","../foundation/dest/fields/coordinate.d.ts","../foundation/dest/fields/point.d.ts","../foundation/dest/fields/index.d.ts","../circuits.js/dest/barretenberg/crypto/ecdsa/signature.d.ts","../circuits.js/dest/barretenberg/crypto/ecdsa/index.d.ts","../circuits.js/dest/barretenberg/crypto/curve/index.d.ts","../circuits.js/dest/barretenberg/crypto/secp256k1/index.d.ts","../foundation/dest/serialize/free_funcs.d.ts","../foundation/dest/serialize/deserializer.d.ts","../foundation/dest/serialize/serializer.d.ts","../foundation/dest/serialize/index.d.ts","../circuits.js/dest/barretenberg/crypto/schnorr/signature.d.ts","../circuits.js/dest/barretenberg/crypto/schnorr/index.d.ts","../circuits.js/dest/barretenberg/crypto/signature/index.d.ts","../circuits.js/dest/barretenberg/crypto/index.d.ts","../circuits.js/dest/barretenberg/index.d.ts","../foundation/dest/crypto/keccak/index.d.ts","../foundation/dest/crypto/random/index.d.ts","../foundation/dest/crypto/sha256/index.d.ts","../foundation/dest/crypto/index.d.ts","./src/key_pair.ts","./src/key_store.ts","../circuits.js/dest/structs/global_variables.d.ts","../foundation/dest/types/index.d.ts","../circuits.js/dest/utils/jsUtils.d.ts","../circuits.js/dest/structs/constants.d.ts","../circuits.js/dest/structs/proof.d.ts","../circuits.js/dest/utils/serialize.d.ts","../circuits.js/dest/structs/shared.d.ts","../circuits.js/dest/structs/verification_key.d.ts","../circuits.js/dest/structs/aggregation_object.d.ts","../circuits.js/dest/structs/function_data.d.ts","../circuits.js/dest/structs/kernel/combined_accumulated_data.d.ts","../circuits.js/dest/structs/tx_context.d.ts","../circuits.js/dest/structs/kernel/combined_constant_data.d.ts","../circuits.js/dest/structs/kernel/public_inputs.d.ts","../circuits.js/dest/structs/kernel/previous_kernel_data.d.ts","../circuits.js/dest/structs/membership_witness.d.ts","../circuits.js/dest/structs/rollup/append_only_tree_snapshot.d.ts","../circuits.js/dest/structs/rollup/base_rollup.d.ts","../circuits.js/dest/structs/rollup/base_or_merge_rollup_public_inputs.d.ts","../circuits.js/dest/structs/rollup/previous_rollup_data.d.ts","../circuits.js/dest/structs/rollup/merge_rollup.d.ts","../circuits.js/dest/structs/rollup/root_rollup.d.ts","../foundation/dest/aztec-address/index.d.ts","../foundation/dest/eth-address/index.d.ts","../circuits.js/dest/structs/call_context.d.ts","../circuits.js/dest/structs/private_circuit_public_inputs.d.ts","../circuits.js/dest/structs/public_circuit_public_inputs.d.ts","../circuits.js/dest/structs/call_stack_item.d.ts","../circuits.js/dest/structs/tx_request.d.ts","../circuits.js/dest/structs/kernel/private_kernel.d.ts","../circuits.js/dest/structs/kernel/public_kernel.d.ts","../circuits.js/dest/structs/circuit_error.d.ts","../circuits.js/dest/structs/function_leaf_preimage.d.ts","../circuits.js/dest/structs/generators.d.ts","../circuits.js/dest/structs/public_call_request.d.ts","../circuits.js/dest/structs/index.d.ts","../circuits.js/dest/wasm/circuits_wasm.d.ts","../circuits.js/dest/wasm/index.d.ts","../circuits.js/dest/cbind/types.d.ts","../circuits.js/dest/cbind/circuits.gen.d.ts","../circuits.js/dest/kernel/private_kernel.d.ts","../circuits.js/dest/kernel/public_kernel.d.ts","../circuits.js/dest/kernel/index.d.ts","../circuits.js/dest/rollup/rollup_wasm_wrapper.d.ts","../circuits.js/dest/rollup/index.d.ts","../circuits.js/dest/index.d.ts","./src/test_key_store.ts","./src/index.ts","../node_modules/@types/abstract-leveldown/index.d.ts","../node_modules/@types/accepts/index.d.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/content-disposition/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/keygrip/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/mime/Mime.d.ts","../node_modules/@types/serve-static/node_modules/@types/mime/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/cookies/index.d.ts","../node_modules/@types/ms/index.d.ts","../node_modules/@types/debug/index.d.ts","../node_modules/@types/detect-node/index.d.ts","../node_modules/@types/jsonfile/index.d.ts","../node_modules/@types/jsonfile/utils.d.ts","../node_modules/@types/fs-extra/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/http-assert/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/koa-compose/index.d.ts","../node_modules/@types/koa/index.d.ts","../node_modules/@types/koa-bodyparser/index.d.ts","../node_modules/@types/koa-compress/index.d.ts","../node_modules/@types/koa-cors/index.d.ts","../node_modules/@types/koa-router/index.d.ts","../node_modules/@types/koa__cors/index.d.ts","../node_modules/@types/level-errors/index.d.ts","../node_modules/@types/leveldown/index.d.ts","../node_modules/@types/levelup/index.d.ts","../node_modules/@types/lodash/common/common.d.ts","../node_modules/@types/lodash/common/array.d.ts","../node_modules/@types/lodash/common/collection.d.ts","../node_modules/@types/lodash/common/date.d.ts","../node_modules/@types/lodash/common/function.d.ts","../node_modules/@types/lodash/common/lang.d.ts","../node_modules/@types/lodash/common/math.d.ts","../node_modules/@types/lodash/common/number.d.ts","../node_modules/@types/lodash/common/object.d.ts","../node_modules/@types/lodash/common/seq.d.ts","../node_modules/@types/lodash/common/string.d.ts","../node_modules/@types/lodash/common/util.d.ts","../node_modules/@types/lodash/index.d.ts","../node_modules/@types/lodash.camelcase/index.d.ts","../node_modules/@types/lodash.chunk/index.d.ts","../node_modules/@types/lodash.clonedeep/index.d.ts","../node_modules/@types/lodash.every/index.d.ts","../node_modules/@types/lodash.flatmap/index.d.ts","../node_modules/@types/lodash.mapvalues/index.d.ts","../node_modules/@types/lodash.omit/index.d.ts","../node_modules/@types/lodash.partition/index.d.ts","../node_modules/@types/lodash.pick/index.d.ts","../node_modules/@types/lodash.snakecase/index.d.ts","../node_modules/@types/lodash.times/index.d.ts","../node_modules/@types/lodash.upperfirst/index.d.ts","../node_modules/@types/lodash.zip/index.d.ts","../node_modules/@types/lodash.zipwith/index.d.ts","../node_modules/@types/memdown/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/sha256/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/ws/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","impliedFormat":1},{"version":"27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20","impliedFormat":1},{"version":"eeeb3aca31fbadef8b82502484499dfd1757204799a6f5b33116201c810676ec","impliedFormat":1},{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true,"impliedFormat":1},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true,"impliedFormat":1},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true,"impliedFormat":1},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true,"impliedFormat":1},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true,"impliedFormat":1},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true,"impliedFormat":1},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true,"impliedFormat":1},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b55d1bc9edcafe448481a3af38d78264371aee11f2e97ee46ec051e93c39af5","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","impliedFormat":1},{"version":"31973b272be35eab5ecf20a38ea54bec84cdc0317117590cb813c72fe0ef75b3","impliedFormat":99},{"version":"75d95006b824198c570e89558d8770dce4f6a9bd7989d4c1a8fa3d2d2ce29577","impliedFormat":99},{"version":"ba8691cf6bea9d53e6bf6cbc22af964a9633a21793981a1be3dce65e7a714d8b","impliedFormat":1},{"version":"a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a","impliedFormat":1},{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3","impliedFormat":1},{"version":"7c387a02bf156d8d45667134d32518ac3ca1b99ca50ca9deff2c1a03eb6d1a81","affectsGlobalScope":true,"impliedFormat":1},{"version":"3719525a8f6ab731e3dfd585d9f87df55ec7d50d461df84f74eb4d68bb165244","impliedFormat":1},{"version":"f993522fd7d01ae1ead930091fe35130b8415720d6c2123dc2a7e8eb11bb3cba","impliedFormat":1},{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","impliedFormat":1},{"version":"b787b5b54349a24f07d089b612a9fb8ff024dbbe991ff52ea2b188a6b1230644","impliedFormat":1},{"version":"bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","impliedFormat":1},{"version":"1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","impliedFormat":1},{"version":"4eaff3d8e10676fd7913d8c108890e71c688e1e7d52f6d1d55c39514f493dc47","impliedFormat":1},{"version":"14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","impliedFormat":1},{"version":"5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea","impliedFormat":1},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true,"impliedFormat":1},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true,"impliedFormat":1},{"version":"7abd2623cdd8148233c0c6b9da0289e124f1718bc58dcb8da4262432e9ce0f0a","impliedFormat":1},{"version":"f4a3088770ba56a4c72e9907bc9798706ab1575097cd024503f57966df2d3d3a","impliedFormat":1},{"version":"7f138842074d0a40681775af008c8452093b68c383c94de31759e853c6d06b5c","impliedFormat":1},{"version":"a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","impliedFormat":1},{"version":"8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","impliedFormat":1},{"version":"2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58","impliedFormat":1},{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true,"impliedFormat":1},{"version":"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","impliedFormat":1},{"version":"7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","impliedFormat":1},{"version":"b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30","impliedFormat":1},{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","impliedFormat":1},{"version":"210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","impliedFormat":1},{"version":"36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","impliedFormat":1},{"version":"0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","impliedFormat":1},{"version":"25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","impliedFormat":1},{"version":"4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","impliedFormat":1},{"version":"1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","impliedFormat":1},{"version":"69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","impliedFormat":1},{"version":"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","impliedFormat":1},{"version":"23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","impliedFormat":1},{"version":"5629c03c44d1e07698c31d04318c9950d78940461269c0f692a42091cedea142","impliedFormat":1},{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","impliedFormat":1},{"version":"1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","impliedFormat":1},{"version":"3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","impliedFormat":1},{"version":"5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2","impliedFormat":1},{"version":"c6b124041039647ff446e19ea0e90a7a83256593d64f23c66b4fda6e0c5b968e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a9fc1469744055a3435f203123246b96c094e7ff8c4e1c3863829d9b705b7a34","affectsGlobalScope":true,"impliedFormat":1},{"version":"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","impliedFormat":1},{"version":"0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","impliedFormat":1},{"version":"e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","impliedFormat":1},{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"cefc6c23bba6c1d2c021076535064867e88d103514b87cb3f9ee109eb1ec9623","impliedFormat":99},{"version":"f84d3e116a53e598758106e96546c9bc7a77dc6daf483d1ab9cc1b1ff1d83a49","impliedFormat":99},{"version":"0700ea2ece0b6e7609f86bc93d1d4713fd3f53be3ed4d3384baddd9daff050aa","impliedFormat":99},{"version":"8b070b73bb6b42225b7c3b6625bda6664954cc3712229b18958a8943b340ae55","impliedFormat":99},{"version":"ffd866cc73983a737e49e3343c29f26c76a740532415b8c93c6ee12f9368a13c","impliedFormat":99},{"version":"d8f0e392ff96233c719df87882cfef4e0e3fe03d1b2aa0be74723f08e0e3122b","impliedFormat":99},{"version":"9f7210cee13dfbeae4849e514b0853a40a847ae207a2f569e4c0ca0a1b913a0b","impliedFormat":99},{"version":"c6810e08bed4b4f88c68468da794be55edfc1384cee2842a723584b5282cee82","impliedFormat":99},{"version":"b4117081407f355734a73e4f2051edeafff14541bacaa61b2b5b74de3a6d9f91","impliedFormat":99},{"version":"2f2a389ef49710ab29f04438d79be59c7b91ab857b7148c13b3d071727888f89","impliedFormat":99},{"version":"b0244ed1d90d39d5805ab8526048561e8dd7592ae860aa5740b812a05f6a884f","impliedFormat":99},{"version":"91d124799a847e0543f9184690bddcf296c0a4884d95118a552a301aa119ac32","impliedFormat":99},{"version":"efa93fb993d719738247cced003c83343073a921b7004bf5c1a4758d9577b052","impliedFormat":99},{"version":"59a14b5fb91d9beefcbbdeee3be5e91a63dd0cf52d02afd5841659bf43183955","impliedFormat":99},{"version":"e8621891881a8e1cb60703b7188d6ab5c456b31fb4c24d2509c3cce0f1685f63","impliedFormat":99},{"version":"04f0e5540074077b5194e4e50f045b07ea1c0d4ba639f2a90c25d415be93d62a","impliedFormat":99},{"version":"4178562067a87abafc21ba9a1676477adc1b08cb4e497a999c02437a55cce3b9","impliedFormat":99},{"version":"628c20251711da8fdfed342441abeb8676f0effcb095a424482aba73e26cf0f4","impliedFormat":99},{"version":"c6e9e8b550a9aa621b81e7a49b2e33ede8f0e9d582a04dce4be3ade7d591b9d7","impliedFormat":99},{"version":"c2a3209fd29ed0b0daa24d258b108f7b4e4ba2656a99e529ceedd4a044b2edb8","impliedFormat":99},{"version":"a0bd6bccba91b399e4e98bb50ef2064f2dd1e5566151911526368667fb27f151","impliedFormat":99},{"version":"17be7fc3478034102cdd53327202ddba3a72d1cf4b970f12ddd629e01338ab94","impliedFormat":99},{"version":"85656a43f420d7d8b98bc13cc7f56b03fc44727c7c56288858ef70336d10051c","impliedFormat":99},{"version":"c4e1f7299f647938767a7f77d62ddf5b0bc76b6139a22d06aa3b1dad1e795683","impliedFormat":99},{"version":"87d6b7f4e8ccc4ccf03b3f416a883d03e952643e706cb6e67a49e602230b1a4e","impliedFormat":99},{"version":"887487a5384d6dad0e9df93c75bd8346381ea5d52ac3c6d353d14d464d6af948","impliedFormat":99},{"version":"052cdf9abce5e9252a42c5af82cb4591f03ecb83ebbb521fb74b31e2acd0ad79","impliedFormat":99},{"version":"76b1d15c83a9fd9909fd81e32024727743ae506de24a1bebc60719ad93cce0db","impliedFormat":99},{"version":"8a0ab25856a3fcd2c10da218932bb157fcab3ae61294c3506200f28f5d19b9c1","impliedFormat":99},{"version":"bff5e7e514980487864d34f69b6eda6f93506aff6dd9ced75f9a172ded1a71b4","impliedFormat":99},{"version":"3b72dcc9b0420a651991e0b182179f88e251bdbab83c369f54d28075d13bf9da","impliedFormat":99},{"version":"955a24e28310e9b71695b601e309957702e2da09e67f5bc5359bfae4a603e9b6","impliedFormat":99},{"version":"ac030f3c41a1797c673137478c675da6542c0676341c85f68b93fcecaaeb4778","impliedFormat":99},{"version":"de24ca8d9277f1e78c0a904ab762dca156aa55b6ae6fb2bb27c39c9193ca9b93","impliedFormat":99},{"version":"0679dbdd43d4fae7b84baf09c5299ef7fca6effba02e711fb3bcabfe4b3719ca","impliedFormat":99},{"version":"826a1b14726721df754caf387d730b2bfd287ea5aebf28dbb7159906a61f071a","impliedFormat":99},{"version":"880202d87511f49510679ddeb8e48eff120d21b8c6d4bd1ac2790d1a9dfe8c11","impliedFormat":99},{"version":"4a293e43ec581263f244f42c25dc845b8b365bc4786461a7a145a7315ba52c4f","impliedFormat":99},{"version":"696d2de981db4246b3d95dbdaff91c002b63929fc9c8a8fba978803e99132b73","impliedFormat":99},{"version":"fb42ec018a1116892defd161cf833412ebfcd59220550420e4cd7c1f764d376a","impliedFormat":99},{"version":"839f3dd616a22080c877741e3bae387986659662097dfc71c30c7dcba9ecd40d","impliedFormat":99},{"version":"2db78e441abc9509ee1ba8135969585af54d97a8dfbc0c1bc00c9e07a5111cda","impliedFormat":99},{"version":"f5f4ab473e8182c91e5c207ee4a37293e0a9103a96783739bdfe5081f509e304","impliedFormat":99},{"version":"7305e8215df33ec9c636cef1893631b90da3a5a17168f0447fcfb4ba6c44ceae","impliedFormat":99},{"version":"0008743cb924cfc5fec7e3f52533ac48e1327e508717d75b1e00d695e32e1141","impliedFormat":99},{"version":"010f778018031c98960a052d36142b4106989d6549003bb217ce662093bb045c","impliedFormat":99},{"version":"4c17bf2ac6454e6e59ebeef88495296cb874c6cc80d14bbeb19a17064bc6e01c","impliedFormat":99},{"version":"4e95ec0cecdff1f7b46105fe7b076330d96d9a19b8d8265604c6fbb77112fee4","impliedFormat":99},{"version":"76754a7298440ad64d26e35627f7b480a583c8a36b85cce911ad515912a702b6","impliedFormat":99},{"version":"b1e0887b0c3f20f96a29bbc5458591d688a3d5c08cc10cd6a2e215bb30b9adf9","impliedFormat":99},{"version":"e26ddd1375354e325032658e0f6e448e9710a12916dcf2522f6b936fde7b49fa","impliedFormat":99},{"version":"8dd8dea60b4698d3a8e1561969cafa49fdddd0b6c8838f217e30919ce08c6c43","impliedFormat":99},{"version":"d55a90365db95a382cf5a8122c6c59f00808464232fa96f39cf49fcf1369c88c","impliedFormat":99},{"version":"11d905c81cc03c0601281afe9772176ea8ea25a03caf2ad30a1813536f1c427c","impliedFormat":99},{"version":"5ee0516e8e966dbf01c13740cd71e435e29e0e2c7922c87ee75dd654822eec97","impliedFormat":99},{"version":"be67d0ac335fbb4dff8877143098215a888d83fb1276f940e9f7c2a30dde6354","impliedFormat":99},{"version":"015fcef7ffd1c838374dcd98129a3b6c914e351c4364d0e5a3a438b6e8e454ff","impliedFormat":99},{"version":"a0723255564a0b7aa871f159d88479dbf75d22b6e623160587f6ce51a3528d4e","impliedFormat":99},{"version":"613d4f801b7b9c0d0dc30fe3329c23f498d8f837acb983ca7e80f1fb24694bda","impliedFormat":99},{"version":"cd0ab1e1fbfa6f124406c4efab3d210740f4eba396a29f7d96fb9edc4f1bd5fa","impliedFormat":99},{"version":"678ec75f216673002b29cb752cd38382d29d5a0fb6b2836f9f24458221c09c1f","impliedFormat":99},{"version":"f501326afb889064aaeef6153b383429ffffc6c0f5e95ed7184afbea8fcce283","impliedFormat":99},{"version":"146ad2d1a08ab3ac71b8613976e2e00e2b4401465197dde1d6bdc0c8d6598348","impliedFormat":99},{"version":"d0dc4d51b0530da740b28b9ea080ccb09a4694a61cc824fc4c99f226fca5c55f","impliedFormat":99},{"version":"d15374e98ff5bb85d2b1bd8b631a765a7c6dfc213ecb8e81ba8f4de6a765272b","signature":"7b392c04ddbfe02140fd80d231017bc154a6716ca74f00afd7d2f03ab7c47a75","impliedFormat":99},{"version":"4febc80721cb3bc0939af42a4fa5b384fbe041a89348c46d66d76d0d12ca0bfc","signature":"2ba1c5033cc870c056c6176ae1416347a15ad7a68d1159d718ce651d4ad082bf","impliedFormat":99},{"version":"e1e6061d9b0ff6a7cf9928c473d42f72b24d29ae700d6fd94b1335dfef72a038","impliedFormat":99},{"version":"27f60c08d185b9b15af9f283967aff85ef96c9b6c6ba71e1d7664abd708c70e1","impliedFormat":99},{"version":"b6e5a64c81eed84996c813f79fe5f963e865b1a13b12a8bc39944dc0d775a73b","impliedFormat":99},{"version":"b0b0d342742ad8ffb48dc4937a73d5032b49eb00f0f91bbbcfc9f208e9f74c09","impliedFormat":99},{"version":"321eeb9f347bdfe652d6017027c62aae4363904531a46b284c53e17bb169937a","impliedFormat":99},{"version":"d54e95fc6b698dd296803554494596dfec1fb4fab9ea457992921137731971d3","impliedFormat":99},{"version":"2c18c01afce4e41de55234ed88804a8e64b27959d3c659deabeec5fc5ab7016e","impliedFormat":99},{"version":"893e92684cb2440ccb8e6d3ba047da930f7acc6583ad2c53ffe01a513fa85cc6","impliedFormat":99},{"version":"b0e3ff211f12effaa1fcbf3b82439ba504d129eccba9d28972094d0c05d45fa6","impliedFormat":99},{"version":"314ebe8f83018b224f780871575f5f013b3b132d130045a37d1c4d7c3ab91a26","impliedFormat":99},{"version":"f30288816374d9ca3f08a1a58576ed1da70047f0bd48574c937f0ebf5454ba4f","impliedFormat":99},{"version":"4bf84e3039c878f6cfc3c67336802f8d73b34c79522c009e4382ea06b2041e08","impliedFormat":99},{"version":"baab9a91c2e9ac2704cd9b16013e40a811800fba34cdbe4cf25fcc58d55ef9e4","impliedFormat":99},{"version":"9f08a8f74737312af23906e18c8fa3f25957904176b817973ca1fdcbd28eb1f6","impliedFormat":99},{"version":"e002b4ac7be3ec6cd60620b51d3798cbe9e4b824217b5e4a4dbf976a67138763","impliedFormat":99},{"version":"b236072e2e3612e628b56b0a4fbda3ff59e91430fb3d8f3a8b627829987193f3","impliedFormat":99},{"version":"19e6100f2640f30ed767dfb628b0a4de25b18e3bcd70f139d40115e2a66119db","impliedFormat":99},{"version":"713a88e49f094958fc3d71bf2a34a43fbfee7e4f42cab9d78599817f451c0f8b","impliedFormat":99},{"version":"6081b617fed2371a6c24335de787c9fe819f8d12a4ce95869c1e56094847aa84","impliedFormat":99},{"version":"0ded2126386ae8c3ba02adc1ad0db22caafb4f33dce84905165a83a6bea81cac","impliedFormat":99},{"version":"c92f0fabc2bc179f326c9f6c94fec830728fcd85125d3d4d4d6ebc4a220faab2","impliedFormat":99},{"version":"c180ab420730b721f82a6ce34229ea8a7bcaaed4f77a6871c5c8191fb93811e0","impliedFormat":99},{"version":"4bad98ee185a9b846432871d57d4fa51a893198525dee5cd1abd14905318f983","impliedFormat":99},{"version":"b292f2f28ef4bf70eff169f2685454889616ae7b90a94709717950e2e420bbbe","impliedFormat":99},{"version":"9e42ea935d75fa51973d54f57c0e1a8262883c1a26f162229d6553944071e6bd","impliedFormat":99},{"version":"09008703ed6c237b60850202d2a3644036ed15b159a128d4ab5050063745addd","impliedFormat":99},{"version":"54fa601e155912593969368398716bef7856f2187487b99901130c4630d2881b","impliedFormat":99},{"version":"9b77b679d63e52fbd7cff0f1747059939e77c8fb776ad52431c916f8e7de6722","impliedFormat":99},{"version":"879df3319e7419ae8d5a779ebdc8e65c7c8bd11f6602c6ce1934804deace203e","impliedFormat":99},{"version":"ab2995d5b72612f42abe3f2c5ffe591f54da3176ee874008d3ef475418323eaf","impliedFormat":99},{"version":"7a91d2ef533fb95fc7b3e4719eedec8b34afdd1ba93cecce25a9f7a8514aab5f","impliedFormat":99},{"version":"afa639a8d42a185bcd21ca4e63ed469ccfd25f9d27d5c17baef39e21b6351c29","impliedFormat":99},{"version":"e754fdb10e238996cd4ba5f999c5cb608c39b027d324cc80ca2c32a122884c1d","impliedFormat":99},{"version":"06e07bebd72fa2584003dbe9310be7a0c29bbc3af999f2160d58807df6476bd9","impliedFormat":99},{"version":"1a2932d6a626d8580578d5dccbaf9f1319e10397c81530ebfccef4109ba3e943","impliedFormat":99},{"version":"3cefc9cefcf0e5ab795a13d076139bd8b3bcf4d3d5395e562ca2892cf50aa56e","impliedFormat":99},{"version":"18a255120ab15f516d4f9ab0fc7e31e365a409bca9a46c72ab935478b0d83778","impliedFormat":99},{"version":"c0a569b697ab88a624ed2631486292de08dde4ade15b9d59ccde808cd21790b8","impliedFormat":99},{"version":"123f9ba59583bc4b8d71c3d595e9c046af21db9b72ce78ed1570363f4153de6d","impliedFormat":99},{"version":"e27e7bb0c04d6183adaec331c986a2d6c7305e1310915762a4993a78c8a6a20c","impliedFormat":99},{"version":"7dc5a5782daa37adb166e66e0c027e9513a7f70bea59b4a9087109a6b99198d4","impliedFormat":99},{"version":"bf4b482e966df6eda1d8a0f19b5f0f8d1741a37c1b654c587e7d95e64c2cac12","impliedFormat":99},{"version":"3198331217528633cb4796d40d3d0826a4b85bec3b4c9aac92b14320656070bd","impliedFormat":99},{"version":"b87dfb5b5c49728de74142794ede02ad5450800f7a12a5b4caa95b8bc7f17c7a","impliedFormat":99},{"version":"1dda81bd959c909350134e259a96ff018f3338a96f0859405150cd545ff3caec","impliedFormat":99},{"version":"d5b601b85ba32bdfba1eae2bb5f07c571d7b91772e5751449b7fa59a5415cee6","impliedFormat":99},{"version":"ee6cf1d968cc73d52584d4c4fbab61ca62f596257c35bcbfa63c33de6e3689e1","signature":"c7e8396aa6775830e99eb304650ae06fc33b2f8ec7fe21a33eaf565c5e5436e7","impliedFormat":99},{"version":"41e0018a6359b740e78551c10692ce8745e0a7d4ce7c7bfd043a8c3983794c2e","impliedFormat":99},{"version":"409b21f3d0c198cc4866b941cd9303809a13230e2b9b3c1508fe61348a8b43ed","impliedFormat":1},{"version":"6738101ae8e56cd3879ab3f99630ada7d78097fc9fd334df7e766216778ca219","impliedFormat":1},{"version":"ac65f04c2df0218cb8e54f012745cbfcc3c0e67c1f6b1e557d88842bbb72e2db","impliedFormat":1},{"version":"cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","impliedFormat":1},{"version":"a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","impliedFormat":1},{"version":"93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","impliedFormat":1},{"version":"6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","impliedFormat":1},{"version":"9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","impliedFormat":1},{"version":"6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","impliedFormat":1},{"version":"afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","impliedFormat":1},{"version":"204dbe6c72467fb14bbe8f06510b11fb541b6ce29580c6e10ebd3bdb2eb0c1f9","impliedFormat":1},{"version":"8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6","impliedFormat":1},{"version":"ce013414484233b24f42c0fcfca48a60bb66ab4e13c82953662305e8f1ee4925","impliedFormat":1},{"version":"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","impliedFormat":1},{"version":"aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","impliedFormat":1},{"version":"16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","impliedFormat":1},{"version":"ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","impliedFormat":1},{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true,"impliedFormat":1},{"version":"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","impliedFormat":1},{"version":"951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","impliedFormat":1},{"version":"f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","impliedFormat":1},{"version":"f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","impliedFormat":1},{"version":"43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","impliedFormat":1},{"version":"eb96a2321f717bccc3e49e104e299152984b927ea4546b559ae631c06565819c","impliedFormat":1},{"version":"6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","impliedFormat":1},{"version":"93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c","impliedFormat":1},{"version":"3896464bb7e25fceebbd9c8a0b443caaa9b68ec323f46191c36b84293c852a19","impliedFormat":1},{"version":"ab754c02d70553f7131f80a5c44f6e45c3251afb571a73117274b4724f683e02","impliedFormat":1},{"version":"5d9a0b6e6be8dbb259f64037bce02f34692e8c1519f5cd5d467d7fa4490dced4","impliedFormat":1},{"version":"732a22e28e99e56f4f76410ef1d28ab502ae569ed7a25161db50629814f0c4e3","impliedFormat":1},{"version":"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","impliedFormat":1},{"version":"e98185f4249720ace1921d59c1ff4612fa5c633a183fc9bf28e2e7b8e3c7fd51","impliedFormat":1},{"version":"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","impliedFormat":1},{"version":"7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","impliedFormat":1},{"version":"f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","impliedFormat":1},{"version":"6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"6d969939c4a63f70f2aa49e88da6f64b655c8e6799612807bef41ccff6ea0da9","impliedFormat":1},{"version":"240c702fb4b3bd54d83ee167d80fa7f0cd7300fef7eea0b32cef33129740893c","affectsGlobalScope":true,"impliedFormat":1},{"version":"dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","impliedFormat":1},{"version":"5006668996956580886022c05108e32c742823e1b5652aff7914917233731518","impliedFormat":1},{"version":"f8d0beda035de0b038190fc4e204cfbdf7ce3d3e8e7d0828953054e2fbca0c95","impliedFormat":1},{"version":"488b0a139b5f35ded772136cf4b541f3babf22e4ce9056daf65736234e88355d","impliedFormat":1},{"version":"77224b06a9d39e8710eca2050acadd9f9e062b068d74aa98e38a6854c272d35e","impliedFormat":1},{"version":"9c9eaf33da5632848f083afb7a4542458815cc5bbd8f83c7a67245a9ac64697c","impliedFormat":1},{"version":"b01ff94f909594d68f1c14814f44cc174b509655a689814e4a69ceff601ecce8","impliedFormat":1},{"version":"b4a08a0500c3eb3f2fb65295cbb397d7e02780863088c6178fa0f56574d07039","impliedFormat":1},{"version":"49afdedca00d22b171678e3cf9c47b7e0c1846fd4905a01d68f0145eb90add94","impliedFormat":1},{"version":"2c425702763ca7d738b2f0080be64d366a0818106a73c2595ed3ea51967f18c8","impliedFormat":1},{"version":"7a1b0fbc4287cb7513c0a10d9b53f5acc32d3ced53b2d786711901d483c4dbb4","impliedFormat":1},{"version":"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","impliedFormat":1},{"version":"458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","impliedFormat":1},{"version":"19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","impliedFormat":1},{"version":"98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","impliedFormat":1},{"version":"3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","impliedFormat":1},{"version":"3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"e31757bbb9fa12447996264fd6880c143eb615051d75d2bdec09fb030f8c7e2a","impliedFormat":1},{"version":"6fc42e343787360a03cabb88a56e6910f69d3c998e61d6079218dcea89df537c","impliedFormat":1},{"version":"1ecdcf09ff556c7be88a5969071d09fdf173da75b7502ee2ae3d368b0e33a87f","impliedFormat":1},{"version":"ad881719f5beea0ddb789a61d8c1cf1c5116f08466c0c644f8572921653d7a80","impliedFormat":1},{"version":"a5e323229d55dbac671030510aafe6e3967c7d3f8f9d981d2e5a99b2242a735b","impliedFormat":1},{"version":"6278dd6eaa35d93f4ec56ee3d3f34734e26085aa9c7da61999ff78e5fa6d5e1e","impliedFormat":1},{"version":"8ab5fe27912c8f1d58fa58794f542cb3cea68984734f556a26195bffd4c74524","impliedFormat":1},{"version":"ad3f4477e9c8905ca7b793f36d5176eb328934420fe08f1c0733f46d906a5ec5","impliedFormat":1},{"version":"c1d6e89ac3a6fec0ceca71f5c63956494c21ce7893f656b26b26a64804d034b4","impliedFormat":1},{"version":"ddbfae0c834a7c1392c5b8531cd4428503a82f1b522da8aa19a590d1b2db24b2","impliedFormat":1},{"version":"d931da5a2655d4c6fd89fc0669628b5dffb1f285eab52b0305a79316b3b14cb2","impliedFormat":1},{"version":"fdad450ae18af59550c3832b877e424c3ff26f437d50873152cd0ab3ba22f3e6","impliedFormat":1},{"version":"fb7f398e2e4da5224f6405245f2af736ae3b95e10f18c4542a5e464a1a02ff9e","impliedFormat":1},{"version":"f6e765a460eee7338117665a5d27b73568e08b31c684e0c65b354c0ab9ecfeaf","impliedFormat":1},{"version":"8408c66a83053c21d93e73c1f6773647ccdb60fb9468f99341e389f3bfa35ad7","impliedFormat":1},{"version":"209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","impliedFormat":1},{"version":"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","impliedFormat":1},{"version":"d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","impliedFormat":1},{"version":"58a3914b1cce4560d9ad6eee2b716caaa030eda0a90b21ca2457ea9e2783eaa3","impliedFormat":1},{"version":"2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","impliedFormat":1},{"version":"2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","impliedFormat":1},{"version":"42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","impliedFormat":1},{"version":"d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","impliedFormat":1},{"version":"b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","impliedFormat":1},{"version":"7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","impliedFormat":1},{"version":"906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","impliedFormat":1},{"version":"5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","impliedFormat":1},{"version":"c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","impliedFormat":1},{"version":"e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","impliedFormat":1},{"version":"e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","impliedFormat":1},{"version":"9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","impliedFormat":1},{"version":"0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","impliedFormat":1},{"version":"71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","impliedFormat":1},{"version":"c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","impliedFormat":1},{"version":"2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","impliedFormat":1},{"version":"479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","impliedFormat":1},{"version":"ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","impliedFormat":1},{"version":"f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","impliedFormat":1},{"version":"86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","impliedFormat":1},{"version":"2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","impliedFormat":1},{"version":"a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","impliedFormat":1},{"version":"b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","impliedFormat":1},{"version":"61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","impliedFormat":1},{"version":"6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","impliedFormat":1},{"version":"c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","impliedFormat":1},{"version":"38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","impliedFormat":1},{"version":"d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","impliedFormat":1},{"version":"3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","impliedFormat":1},{"version":"b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","impliedFormat":1},{"version":"f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","impliedFormat":1},{"version":"843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","impliedFormat":1},{"version":"f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","impliedFormat":1},{"version":"6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","impliedFormat":1},{"version":"e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","impliedFormat":1},{"version":"a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","impliedFormat":1},{"version":"a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","impliedFormat":1},{"version":"da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","impliedFormat":1},{"version":"dbfe3477c0299c6965bbf7e7c033abcf10ccbbc8bd2690f42cfac99ca7a83d20","impliedFormat":1},{"version":"f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","impliedFormat":1},{"version":"cffac9db07bba0b35754412e48215d1bc5153c03c46409bbeaf315848359822b","impliedFormat":1},{"version":"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","impliedFormat":1},{"version":"214f291323316651737db8ca0db4c14ae568a429e59fc5b4f364dd80fe72d5f6","impliedFormat":1},{"version":"76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","impliedFormat":1},{"version":"2dd1d4cea14cead7a7fc9eec8f40593089dff0de8c0199458446143c9b8c4ea9","impliedFormat":1},{"version":"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","impliedFormat":1},{"version":"e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750","impliedFormat":1}],"root":[61,184,185,232,233],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"esModuleInterop":true,"importHelpers":true,"inlineSourceMap":true,"module":199,"outDir":"./dest","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[111],[69,111,118,156],[111,118],[111,118,156,167,178],[111,118,166,178],[111,118,156,178],[111,157,158,160,168,169,170,176,177],[111,159],[111,118,156,175,178],[111,118,166,174,178],[111,118,156,169],[111,118,166],[64,111,178],[69,111,118,156,174,224],[111,221],[111,188,221,223,228,230],[111,226,227],[69,111,118,223,225,231],[111,231],[111,229],[111,222,231],[111,118,166,174,192,193],[111,118,174,188,208,209,221],[111,118,195,208,211,212],[111,118,174],[111,118,166,174],[111,118,166,174,231],[111,166,186,189,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220],[111,118,174,189,194,195,221],[111,118,166,174,188,197],[111,118,174,189,190,192,193,199,221,231],[111,118,188,189,190,193,200,201,209,213,214,221],[111,118,174,196,198],[111,118,166,174,189,190,200,201,213],[111,118,166,188,197,210],[111,118,174,221,231],[111,118,166,174,188,189,208,210],[111,118,166,174,192],[111,118,166,174,192,194,202,203],[111,118,166,174,186,188,189,192,200,201,202],[111,118,205],[111,118,189,190,192,193,201,204],[111,118,166,174,186,188,194,202,205],[111,118,191],[111,118,174,221],[111,118,166,174,188,195,197,208],[111,118,174,192,221],[111,174,187],[111,156],[111,222],[111,118,162,166],[111,180,181,182],[111,118,163],[111,118,161,163],[111,118,162],[111,163,164,165],[111,118,162,163,164],[111,120,141,142],[111,161,162,171,172,173],[111,131,132,133,134],[111,122],[111,123,130],[81,111,118,128],[111,120],[111,121,124,125],[111,121,122,123,124,125,126,127,128,129,135,139],[81,111,118,122],[111,137,138],[111,115,118,123,136],[111,115,118,122],[81,111,118,123],[111,128],[111,149,152,154,155],[111,144],[69,111,118,143],[111,146,148],[111,118,147],[111,145],[111,145,153],[111,150,151],[111,140,144],[63,111,184,185,232],[63,111,166,179,183],[63,111,166],[63,111,179,184,185,231],[111,236],[111,271],[84,111,118],[111,236,237,238,239,240],[111,236,238],[84,111,118,242],[84,111,118,242,246,256],[111,258],[81,84,111,118,248,249,250],[111,243,250,251,255],[82,111,118,261,262],[82,111,118],[111,266],[111,267],[111,273,276],[82,110,111,118],[111,280],[111,116,118,280],[81,84,85,89,95,110,111,118,235,244,246,254,257,265,279],[111,118,234],[81,111,118,234,286],[111,301],[111,289,291,292,293,294,295,296,297,298,299,300,301],[111,289,290,292,293,294,295,296,297,298,299,300,301],[111,290,291,292,293,294,295,296,297,298,299,300,301],[111,289,290,291,293,294,295,296,297,298,299,300,301],[111,289,290,291,292,294,295,296,297,298,299,300,301],[111,289,290,291,292,293,295,296,297,298,299,300,301],[111,289,290,291,292,293,294,296,297,298,299,300,301],[111,289,290,291,292,293,294,295,297,298,299,300,301],[111,289,290,291,292,293,294,295,296,298,299,300,301],[111,289,290,291,292,293,294,295,296,297,299,300,301],[111,289,290,291,292,293,294,295,296,297,298,300,301],[111,289,290,291,292,293,294,295,296,297,298,299,301],[111,289,290,291,292,293,294,295,296,297,298,299,300],[111,234],[65,111],[68,111],[69,74,102,111],[70,81,82,89,99,110,111],[70,71,81,89,111],[72,111],[73,74,82,90,111],[74,99,107,111],[75,77,81,89,111],[76,111],[77,78,111],[81,111],[79,81,111],[81,82,83,99,110,111],[81,82,83,96,99,102,111],[111,115],[77,81,84,89,99,110,111],[81,82,84,85,89,99,107,110,111],[84,86,99,107,110,111],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],[81,87,111],[88,110,111],[77,81,89,99,111],[90,111],[91,111],[68,92,111],[93,109,111,115],[94,111],[95,111],[81,96,97,111],[96,98,111,113],[69,81,99,100,101,102,111],[69,99,101,111],[99,100,111],[102,111],[103,111],[81,105,106,111],[105,106,111],[74,89,99,107,111],[108,111],[89,109,111],[69,84,95,110,111],[74,111],[99,111,112],[111,113],[111,114],[69,74,81,83,92,99,110,111,113,115],[99,111,116],[111,321,360],[111,321,345,360],[111,360],[111,321],[111,321,346,360],[111,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359],[111,346,360],[82,99,111,118,247],[84,111,118,253,254],[111,253],[111,252],[111,362],[69,82,84,99,111,118,245],[111,365],[81,84,86,99,107,110,111,116,118],[111,368],[68,111,118,269,275],[111,273],[111,270,274],[111,272],[62,111],[166,179],[166],[179,185,231]],"referencedMap":[[61,1],[64,1],[157,2],[169,3],[168,4],[167,5],[158,6],[178,7],[160,8],[159,2],[176,9],[175,10],[170,11],[177,12],[179,13],[225,14],[224,15],[231,16],[228,17],[226,18],[227,19],[230,20],[229,21],[194,22],[210,23],[213,24],[217,25],[189,1],[195,25],[218,26],[219,1],[186,27],[221,28],[196,29],[198,30],[200,31],[215,32],[199,33],[216,34],[201,26],[211,35],[190,25],[220,36],[212,37],[202,38],[204,39],[203,40],[206,41],[205,42],[207,43],[192,44],[197,45],[214,46],[193,47],[188,48],[191,3],[222,49],[223,50],[208,51],[183,52],[180,3],[181,3],[182,53],[209,26],[164,54],[163,55],[166,56],[165,57],[141,1],[120,1],[143,58],[142,1],[162,54],[172,3],[171,12],[174,59],[173,3],[161,1],[135,60],[130,61],[133,62],[134,63],[131,62],[132,63],[121,64],[126,65],[127,1],[140,66],[123,61],[128,67],[122,1],[125,1],[139,68],[137,69],[136,70],[138,63],[124,71],[129,72],[187,1],[156,73],[155,74],[144,75],[149,76],[148,77],[146,78],[147,3],[154,79],[152,80],[151,77],[150,78],[145,81],[153,78],[233,82],[184,83],[185,84],[232,85],[238,86],[236,1],[269,1],[272,87],[271,1],[234,1],[235,88],[241,89],[237,86],[239,90],[240,86],[243,91],[242,88],[244,1],[245,1],[257,92],[259,93],[260,1],[251,94],[256,95],[263,96],[264,97],[265,1],[254,1],[266,1],[267,98],[268,99],[277,100],[278,1],[261,101],[262,1],[246,1],[281,102],[279,102],[282,103],[283,102],[284,102],[280,104],[285,102],[286,1],[287,105],[288,106],[302,107],[303,107],[304,107],[305,107],[306,107],[307,107],[308,107],[309,107],[310,107],[311,107],[312,107],[313,107],[314,107],[315,107],[290,108],[291,109],[289,110],[292,111],[293,112],[294,113],[295,114],[296,115],[297,116],[298,117],[299,118],[300,119],[301,120],[316,121],[247,1],[317,1],[258,1],[65,122],[66,122],[68,123],[69,124],[70,125],[71,126],[72,127],[73,128],[74,129],[75,130],[76,131],[77,132],[78,132],[80,133],[79,134],[81,133],[82,135],[83,136],[67,137],[117,1],[84,138],[85,139],[86,140],[118,141],[87,142],[88,143],[89,144],[90,145],[91,146],[92,147],[93,148],[94,149],[95,150],[96,151],[97,151],[98,152],[99,153],[101,154],[100,155],[102,156],[103,157],[104,1],[105,158],[106,159],[107,160],[108,161],[109,162],[110,163],[111,164],[112,165],[113,166],[114,167],[115,168],[116,169],[318,1],[319,1],[250,1],[249,1],[320,1],[345,170],[346,171],[321,172],[324,172],[343,170],[344,170],[334,170],[333,173],[331,170],[326,170],[339,170],[337,170],[341,170],[325,170],[338,170],[342,170],[327,170],[328,170],[340,170],[322,170],[329,170],[330,170],[332,170],[336,170],[347,174],[335,170],[323,170],[360,175],[359,1],[354,174],[356,176],[355,174],[348,174],[349,174],[351,174],[353,174],[357,176],[358,176],[350,176],[352,176],[248,177],[255,178],[252,179],[253,180],[361,3],[363,181],[362,1],[364,1],[365,182],[366,183],[367,184],[368,1],[369,185],[119,1],[270,1],[276,186],[274,187],[275,188],[273,189],[63,190],[62,1],[59,1],[60,1],[12,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[4,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[56,1],[54,1],[55,1],[57,1],[10,1],[1,1],[11,1],[58,1]],"exportedModulesMap":[[61,1],[64,1],[157,2],[169,3],[168,4],[167,5],[158,6],[178,7],[160,8],[159,2],[176,9],[175,10],[170,11],[177,12],[179,13],[225,14],[224,15],[231,16],[228,17],[226,18],[227,19],[230,20],[229,21],[194,22],[210,23],[213,24],[217,25],[189,1],[195,25],[218,26],[219,1],[186,27],[221,28],[196,29],[198,30],[200,31],[215,32],[199,33],[216,34],[201,26],[211,35],[190,25],[220,36],[212,37],[202,38],[204,39],[203,40],[206,41],[205,42],[207,43],[192,44],[197,45],[214,46],[193,47],[188,48],[191,3],[222,49],[223,50],[208,51],[183,52],[180,3],[181,3],[182,53],[209,26],[164,54],[163,55],[166,56],[165,57],[141,1],[120,1],[143,58],[142,1],[162,54],[172,3],[171,12],[174,59],[173,3],[161,1],[135,60],[130,61],[133,62],[134,63],[131,62],[132,63],[121,64],[126,65],[127,1],[140,66],[123,61],[128,67],[122,1],[125,1],[139,68],[137,69],[136,70],[138,63],[124,71],[129,72],[187,1],[156,73],[155,74],[144,75],[149,76],[148,77],[146,78],[147,3],[154,79],[152,80],[151,77],[150,78],[145,81],[153,78],[233,82],[184,191],[185,192],[232,193],[238,86],[236,1],[269,1],[272,87],[271,1],[234,1],[235,88],[241,89],[237,86],[239,90],[240,86],[243,91],[242,88],[244,1],[245,1],[257,92],[259,93],[260,1],[251,94],[256,95],[263,96],[264,97],[265,1],[254,1],[266,1],[267,98],[268,99],[277,100],[278,1],[261,101],[262,1],[246,1],[281,102],[279,102],[282,103],[283,102],[284,102],[280,104],[285,102],[286,1],[287,105],[288,106],[302,107],[303,107],[304,107],[305,107],[306,107],[307,107],[308,107],[309,107],[310,107],[311,107],[312,107],[313,107],[314,107],[315,107],[290,108],[291,109],[289,110],[292,111],[293,112],[294,113],[295,114],[296,115],[297,116],[298,117],[299,118],[300,119],[301,120],[316,121],[247,1],[317,1],[258,1],[65,122],[66,122],[68,123],[69,124],[70,125],[71,126],[72,127],[73,128],[74,129],[75,130],[76,131],[77,132],[78,132],[80,133],[79,134],[81,133],[82,135],[83,136],[67,137],[117,1],[84,138],[85,139],[86,140],[118,141],[87,142],[88,143],[89,144],[90,145],[91,146],[92,147],[93,148],[94,149],[95,150],[96,151],[97,151],[98,152],[99,153],[101,154],[100,155],[102,156],[103,157],[104,1],[105,158],[106,159],[107,160],[108,161],[109,162],[110,163],[111,164],[112,165],[113,166],[114,167],[115,168],[116,169],[318,1],[319,1],[250,1],[249,1],[320,1],[345,170],[346,171],[321,172],[324,172],[343,170],[344,170],[334,170],[333,173],[331,170],[326,170],[339,170],[337,170],[341,170],[325,170],[338,170],[342,170],[327,170],[328,170],[340,170],[322,170],[329,170],[330,170],[332,170],[336,170],[347,174],[335,170],[323,170],[360,175],[359,1],[354,174],[356,176],[355,174],[348,174],[349,174],[351,174],[353,174],[357,176],[358,176],[350,176],[352,176],[248,177],[255,178],[252,179],[253,180],[361,3],[363,181],[362,1],[364,1],[365,182],[366,183],[367,184],[368,1],[369,185],[119,1],[270,1],[276,186],[274,187],[275,188],[273,189],[63,190],[62,1],[59,1],[60,1],[12,1],[14,1],[13,1],[2,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[3,1],[4,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[56,1],[54,1],[55,1],[57,1],[10,1],[1,1],[11,1],[58,1]],"semanticDiagnosticsPerFile":[61,64,157,169,168,167,158,178,160,159,176,175,170,177,179,225,224,231,228,226,227,230,229,194,210,213,217,189,195,218,219,186,221,196,198,200,215,199,216,201,211,190,220,212,202,204,203,206,205,207,192,197,214,193,188,191,222,223,208,183,180,181,182,209,164,163,166,165,141,120,143,142,162,172,171,174,173,161,135,130,133,134,131,132,121,126,127,140,123,128,122,125,139,137,136,138,124,129,187,156,155,144,149,148,146,147,154,152,151,150,145,153,233,184,185,232,238,236,269,272,271,234,235,241,237,239,240,243,242,244,245,257,259,260,251,256,263,264,265,254,266,267,268,277,278,261,262,246,281,279,282,283,284,280,285,286,287,288,302,303,304,305,306,307,308,309,310,311,312,313,314,315,290,291,289,292,293,294,295,296,297,298,299,300,301,316,247,317,258,65,66,68,69,70,71,72,73,74,75,76,77,78,80,79,81,82,83,67,117,84,85,86,118,87,88,89,90,91,92,93,94,95,96,97,98,99,101,100,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,318,319,250,249,320,345,346,321,324,343,344,334,333,331,326,339,337,341,325,338,342,327,328,340,322,329,330,332,336,347,335,323,360,359,354,356,355,348,349,351,353,357,358,350,352,248,255,252,253,361,363,362,364,365,366,367,368,369,119,270,276,274,275,273,63,62,59,60,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,56,54,55,57,10,1,11,58],"latestChangedDtsFile":"./dest/index.d.ts"},"version":"5.1.6"}
|
package/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Key Store
|
|
2
|
+
|
|
3
|
+
A key store is an input component for the [AztecRPCServer](../aztec-rpc/) to manage keys securely. It provides a secure environment and interfaces for users to manage their keys. When the AztecRPCServer requests keys and signatures from the key store, a well-designed key store should prompt users to authorize the requested action before sending any sensitive information to the AztecRPCServer. This helps to ensure that sensitive data, such as private keys, is not accessible to unauthorized parties. Additionally, the key store should provide robust protection mechanisms such as encryption, multi-factor authentication, and backup/restore functionalities to prevent data loss or theft.
|
package/dest/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dest/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './key_pair.js';
|
|
2
|
+
export * from './key_store.js';
|
|
3
|
+
export * from './test_key_store.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDIn0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Curve } from '@aztec/circuits.js/barretenberg';
|
|
3
|
+
import { Point } from '@aztec/foundation/fields';
|
|
4
|
+
/**
|
|
5
|
+
* Represents a cryptographic public-private key pair.
|
|
6
|
+
* Provides functionality to generate, access, and sign messages using the key pair.
|
|
7
|
+
*/
|
|
8
|
+
export interface KeyPair {
|
|
9
|
+
getPublicKey(): Point;
|
|
10
|
+
getPrivateKey(): Promise<Buffer>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The ConstantKeyPair class is an implementation of the KeyPair interface, which allows generation and management of a constant public and private key pair. It provides methods for creating a random instance of the key pair, retrieving the public key, getting the private key. This class ensures the persistence and consistency of the generated keys, making it suitable for cryptographic operations where constant key pairs are required.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ConstantKeyPair implements KeyPair {
|
|
16
|
+
private publicKey;
|
|
17
|
+
private privateKey;
|
|
18
|
+
/**
|
|
19
|
+
* Generate a random ConstantKeyPair instance using the .
|
|
20
|
+
* The random private key is generated using 32 random bytes, and the corresponding public key is calculated
|
|
21
|
+
* by multiplying the Grumpkin generator point with the private key. This function provides an efficient
|
|
22
|
+
* way of generating unique key pairs for cryptographic purposes.
|
|
23
|
+
*
|
|
24
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
25
|
+
* @returns A randomly generated ConstantKeyPair instance.
|
|
26
|
+
*/
|
|
27
|
+
static random(curve: Curve): ConstantKeyPair;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new instance from a private key.
|
|
30
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
31
|
+
* @param signer - The signer to be used on the account.
|
|
32
|
+
* @param privateKey - The private key.
|
|
33
|
+
* @returns A new instance.
|
|
34
|
+
*/
|
|
35
|
+
static fromPrivateKey(curve: Curve, privateKey: Buffer): ConstantKeyPair;
|
|
36
|
+
constructor(publicKey: Point, privateKey: Buffer);
|
|
37
|
+
/**
|
|
38
|
+
* Retrieve the public key from the KeyPair instance.
|
|
39
|
+
* The returned public key is a Point object which represents a point on the elliptic curve secp256k1.
|
|
40
|
+
*
|
|
41
|
+
* @returns The public key as an elliptic curve point.
|
|
42
|
+
*/
|
|
43
|
+
getPublicKey(): Point;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieves the private key of the KeyPair instance.
|
|
46
|
+
* The function returns a Promise that resolves to a Buffer containing the private key.
|
|
47
|
+
*
|
|
48
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
49
|
+
*/
|
|
50
|
+
getPrivateKey(): Promise<Buffer>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=key_pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key_pair.d.ts","sourceRoot":"","sources":["../src/key_pair.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,YAAY,IAAI,KAAK,CAAC;IACtB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;IA4BjC,OAAO,CAAC,SAAS;IAAS,OAAO,CAAC,UAAU;IA3BxD;;;;;;;;OAQG;WACW,MAAM,CAAC,KAAK,EAAE,KAAK;IAMjC;;;;;;OAMG;WACW,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM;gBAKzC,SAAS,EAAE,KAAK,EAAU,UAAU,EAAE,MAAM;IAEhE;;;;;OAKG;IACI,YAAY;IAInB;;;;;OAKG;IACI,aAAa;CAGrB"}
|
package/dest/key_pair.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
+
import { Point } from '@aztec/foundation/fields';
|
|
3
|
+
/**
|
|
4
|
+
* The ConstantKeyPair class is an implementation of the KeyPair interface, which allows generation and management of a constant public and private key pair. It provides methods for creating a random instance of the key pair, retrieving the public key, getting the private key. This class ensures the persistence and consistency of the generated keys, making it suitable for cryptographic operations where constant key pairs are required.
|
|
5
|
+
*/
|
|
6
|
+
export class ConstantKeyPair {
|
|
7
|
+
/**
|
|
8
|
+
* Generate a random ConstantKeyPair instance using the .
|
|
9
|
+
* The random private key is generated using 32 random bytes, and the corresponding public key is calculated
|
|
10
|
+
* by multiplying the Grumpkin generator point with the private key. This function provides an efficient
|
|
11
|
+
* way of generating unique key pairs for cryptographic purposes.
|
|
12
|
+
*
|
|
13
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
14
|
+
* @returns A randomly generated ConstantKeyPair instance.
|
|
15
|
+
*/
|
|
16
|
+
static random(curve) {
|
|
17
|
+
const privateKey = randomBytes(32);
|
|
18
|
+
const publicKey = Point.fromBuffer(curve.mul(curve.generator(), privateKey));
|
|
19
|
+
return new ConstantKeyPair(publicKey, privateKey);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new instance from a private key.
|
|
23
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
24
|
+
* @param signer - The signer to be used on the account.
|
|
25
|
+
* @param privateKey - The private key.
|
|
26
|
+
* @returns A new instance.
|
|
27
|
+
*/
|
|
28
|
+
static fromPrivateKey(curve, privateKey) {
|
|
29
|
+
const publicKey = Point.fromBuffer(curve.mul(curve.generator(), privateKey));
|
|
30
|
+
return new ConstantKeyPair(publicKey, privateKey);
|
|
31
|
+
}
|
|
32
|
+
constructor(publicKey, privateKey) {
|
|
33
|
+
this.publicKey = publicKey;
|
|
34
|
+
this.privateKey = privateKey;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retrieve the public key from the KeyPair instance.
|
|
38
|
+
* The returned public key is a Point object which represents a point on the elliptic curve secp256k1.
|
|
39
|
+
*
|
|
40
|
+
* @returns The public key as an elliptic curve point.
|
|
41
|
+
*/
|
|
42
|
+
getPublicKey() {
|
|
43
|
+
return this.publicKey;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Retrieves the private key of the KeyPair instance.
|
|
47
|
+
* The function returns a Promise that resolves to a Buffer containing the private key.
|
|
48
|
+
*
|
|
49
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
50
|
+
*/
|
|
51
|
+
getPrivateKey() {
|
|
52
|
+
return Promise.resolve(this.privateKey);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X3BhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMva2V5X3BhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVdqRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZO1FBQy9CLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBWSxFQUFFLFVBQWtCO1FBQzNELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBb0IsU0FBZ0IsRUFBVSxVQUFrQjtRQUE1QyxjQUFTLEdBQVQsU0FBUyxDQUFPO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtJQUFHLENBQUM7SUFFcEU7Ozs7O09BS0c7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Point } from '@aztec/foundation/fields';
|
|
3
|
+
/** Represents a user public key. */
|
|
4
|
+
export type PublicKey = Point;
|
|
5
|
+
/**
|
|
6
|
+
* Represents a secure storage for managing keys.
|
|
7
|
+
* Provides functionality to create and retrieve accounts, private and public keys,
|
|
8
|
+
*/
|
|
9
|
+
export interface KeyStore {
|
|
10
|
+
createAccount(): Promise<PublicKey>;
|
|
11
|
+
addAccount(privKey: Buffer): PublicKey;
|
|
12
|
+
getAccounts(): Promise<PublicKey[]>;
|
|
13
|
+
getAccountPrivateKey(pubKey: PublicKey): Promise<Buffer>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=key_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key_store.d.ts","sourceRoot":"","sources":["../src/key_store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC;AAE9B;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpC,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Curve } from '@aztec/circuits.js/barretenberg';
|
|
3
|
+
import { KeyStore, PublicKey } from './key_store.js';
|
|
4
|
+
import { Point } from '@aztec/circuits.js';
|
|
5
|
+
/**
|
|
6
|
+
* TestKeyStore is an implementation of the KeyStore interface, used for managing key pairs in a testing environment.
|
|
7
|
+
* It should be utilized in testing scenarios where secure key management is not required, and ease-of-use is prioritized.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TestKeyStore implements KeyStore {
|
|
10
|
+
private curve;
|
|
11
|
+
private accounts;
|
|
12
|
+
constructor(curve: Curve);
|
|
13
|
+
/**
|
|
14
|
+
* Adds an account to the key store from the provided private key.
|
|
15
|
+
* @param curve - The curve to use for generating the public key.
|
|
16
|
+
* @param privKey - The private key of the account.
|
|
17
|
+
* @returns - The account's public key.
|
|
18
|
+
*/
|
|
19
|
+
addAccount(privKey: Buffer): PublicKey;
|
|
20
|
+
/**
|
|
21
|
+
* Adds a new account to the TestKeyStore with a randomly generated ConstantKeyPair.
|
|
22
|
+
* The account will have its own private and public key pair, which can be used for signing transactions.
|
|
23
|
+
* @param curve - The curve to use for generating the public key.
|
|
24
|
+
* @returns A promise that resolves to the newly created account's AztecAddress.
|
|
25
|
+
*/
|
|
26
|
+
createAccount(): Promise<Point>;
|
|
27
|
+
/**
|
|
28
|
+
* Retrieves the public addresses of all accounts stored in the TestKeyStore.
|
|
29
|
+
* The returned addresses are instances of `AztecAddress` and can be used for subsequent operations
|
|
30
|
+
* such as signing transactions or fetching public/private keys.
|
|
31
|
+
*
|
|
32
|
+
* @returns A Promise that resolves to an array of AztecAddress instances.
|
|
33
|
+
*/
|
|
34
|
+
getAccounts(): Promise<Point[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves the private key of the account associated with the specified AztecAddress.
|
|
37
|
+
* Throws an error if the provided address is not found in the list of registered accounts.
|
|
38
|
+
*
|
|
39
|
+
* @param pubKey - The AztecAddress instance representing the account for which the private key is requested.
|
|
40
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
41
|
+
* @deprecated We should not require a keystore to expose private keys in plain.
|
|
42
|
+
*/
|
|
43
|
+
getAccountPrivateKey(pubKey: PublicKey): Promise<Buffer>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve the KeyPair object associated with a given pub key.
|
|
46
|
+
* Searches through the 'accounts' array for a matching public key and returns the corresponding account (KeyPair).
|
|
47
|
+
* Throws an error if no matching account is found in the 'accounts'.
|
|
48
|
+
*
|
|
49
|
+
* @param pubKey - The public key of the account to retrieve.
|
|
50
|
+
* @returns The KeyPair object associated with the provided key.
|
|
51
|
+
*/
|
|
52
|
+
private getAccount;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=test_key_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_key_store.d.ts","sourceRoot":"","sources":["../src/test_key_store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAE/B,OAAO,CAAC,KAAK;IADzB,OAAO,CAAC,QAAQ,CAAiB;gBACb,KAAK,EAAE,KAAK;IAEhC;;;;;OAKG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAM7C;;;;;OAKG;IACI,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;IAMtC;;;;;;OAMG;IACI,WAAW;IAIlB;;;;;;;OAOG;IACI,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/D;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ConstantKeyPair } from './key_pair.js';
|
|
2
|
+
/**
|
|
3
|
+
* TestKeyStore is an implementation of the KeyStore interface, used for managing key pairs in a testing environment.
|
|
4
|
+
* It should be utilized in testing scenarios where secure key management is not required, and ease-of-use is prioritized.
|
|
5
|
+
*/
|
|
6
|
+
export class TestKeyStore {
|
|
7
|
+
constructor(curve) {
|
|
8
|
+
this.curve = curve;
|
|
9
|
+
this.accounts = [];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds an account to the key store from the provided private key.
|
|
13
|
+
* @param curve - The curve to use for generating the public key.
|
|
14
|
+
* @param privKey - The private key of the account.
|
|
15
|
+
* @returns - The account's public key.
|
|
16
|
+
*/
|
|
17
|
+
addAccount(privKey) {
|
|
18
|
+
const keyPair = ConstantKeyPair.fromPrivateKey(this.curve, privKey);
|
|
19
|
+
this.accounts.push(keyPair);
|
|
20
|
+
return keyPair.getPublicKey();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Adds a new account to the TestKeyStore with a randomly generated ConstantKeyPair.
|
|
24
|
+
* The account will have its own private and public key pair, which can be used for signing transactions.
|
|
25
|
+
* @param curve - The curve to use for generating the public key.
|
|
26
|
+
* @returns A promise that resolves to the newly created account's AztecAddress.
|
|
27
|
+
*/
|
|
28
|
+
createAccount() {
|
|
29
|
+
const keyPair = ConstantKeyPair.random(this.curve);
|
|
30
|
+
this.accounts.push(keyPair);
|
|
31
|
+
return Promise.resolve(keyPair.getPublicKey());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves the public addresses of all accounts stored in the TestKeyStore.
|
|
35
|
+
* The returned addresses are instances of `AztecAddress` and can be used for subsequent operations
|
|
36
|
+
* such as signing transactions or fetching public/private keys.
|
|
37
|
+
*
|
|
38
|
+
* @returns A Promise that resolves to an array of AztecAddress instances.
|
|
39
|
+
*/
|
|
40
|
+
getAccounts() {
|
|
41
|
+
return Promise.resolve(this.accounts.map(a => a.getPublicKey()));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Retrieves the private key of the account associated with the specified AztecAddress.
|
|
45
|
+
* Throws an error if the provided address is not found in the list of registered accounts.
|
|
46
|
+
*
|
|
47
|
+
* @param pubKey - The AztecAddress instance representing the account for which the private key is requested.
|
|
48
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
49
|
+
* @deprecated We should not require a keystore to expose private keys in plain.
|
|
50
|
+
*/
|
|
51
|
+
getAccountPrivateKey(pubKey) {
|
|
52
|
+
const account = this.getAccount(pubKey);
|
|
53
|
+
return account.getPrivateKey();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Retrieve the KeyPair object associated with a given pub key.
|
|
57
|
+
* Searches through the 'accounts' array for a matching public key and returns the corresponding account (KeyPair).
|
|
58
|
+
* Throws an error if no matching account is found in the 'accounts'.
|
|
59
|
+
*
|
|
60
|
+
* @param pubKey - The public key of the account to retrieve.
|
|
61
|
+
* @returns The KeyPair object associated with the provided key.
|
|
62
|
+
*/
|
|
63
|
+
getAccount(pubKey) {
|
|
64
|
+
const account = this.accounts.find(a => a.getPublicKey().equals(pubKey));
|
|
65
|
+
if (!account) {
|
|
66
|
+
throw new Error('Unknown account.');
|
|
67
|
+
}
|
|
68
|
+
return account;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9rZXlfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVzdF9rZXlfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUl6RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUR4QixhQUFRLEdBQWMsRUFBRSxDQUFDO0lBQ0UsQ0FBQztJQUVwQzs7Ozs7T0FLRztJQUNJLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVztRQUNoQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksb0JBQW9CLENBQUMsTUFBaUI7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVUsQ0FBQyxNQUFpQjtRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIn0=
|
package/package.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aztec/key-store",
|
|
3
|
+
"version": "0.1.0-alpha13",
|
|
4
|
+
"exports": "./dest/index.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@aztec/circuits.js": "0.1.0-alpha13",
|
|
8
|
+
"@aztec/foundation": "0.1.0-alpha13",
|
|
9
|
+
"@aztec/types": "0.1.0-alpha13",
|
|
10
|
+
"tslib": "^2.4.0"
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/index.ts
ADDED
package/src/key_pair.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Curve } from '@aztec/circuits.js/barretenberg';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
3
|
+
import { Point } from '@aztec/foundation/fields';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Represents a cryptographic public-private key pair.
|
|
7
|
+
* Provides functionality to generate, access, and sign messages using the key pair.
|
|
8
|
+
*/
|
|
9
|
+
export interface KeyPair {
|
|
10
|
+
getPublicKey(): Point;
|
|
11
|
+
getPrivateKey(): Promise<Buffer>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The ConstantKeyPair class is an implementation of the KeyPair interface, which allows generation and management of a constant public and private key pair. It provides methods for creating a random instance of the key pair, retrieving the public key, getting the private key. This class ensures the persistence and consistency of the generated keys, making it suitable for cryptographic operations where constant key pairs are required.
|
|
16
|
+
*/
|
|
17
|
+
export class ConstantKeyPair implements KeyPair {
|
|
18
|
+
/**
|
|
19
|
+
* Generate a random ConstantKeyPair instance using the .
|
|
20
|
+
* The random private key is generated using 32 random bytes, and the corresponding public key is calculated
|
|
21
|
+
* by multiplying the Grumpkin generator point with the private key. This function provides an efficient
|
|
22
|
+
* way of generating unique key pairs for cryptographic purposes.
|
|
23
|
+
*
|
|
24
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
25
|
+
* @returns A randomly generated ConstantKeyPair instance.
|
|
26
|
+
*/
|
|
27
|
+
public static random(curve: Curve) {
|
|
28
|
+
const privateKey = randomBytes(32);
|
|
29
|
+
const publicKey = Point.fromBuffer(curve.mul(curve.generator(), privateKey));
|
|
30
|
+
return new ConstantKeyPair(publicKey, privateKey);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new instance from a private key.
|
|
35
|
+
* @param curve - The curve used for elliptic curve cryptography operations.
|
|
36
|
+
* @param signer - The signer to be used on the account.
|
|
37
|
+
* @param privateKey - The private key.
|
|
38
|
+
* @returns A new instance.
|
|
39
|
+
*/
|
|
40
|
+
public static fromPrivateKey(curve: Curve, privateKey: Buffer) {
|
|
41
|
+
const publicKey = Point.fromBuffer(curve.mul(curve.generator(), privateKey));
|
|
42
|
+
return new ConstantKeyPair(publicKey, privateKey);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
constructor(private publicKey: Point, private privateKey: Buffer) {}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Retrieve the public key from the KeyPair instance.
|
|
49
|
+
* The returned public key is a Point object which represents a point on the elliptic curve secp256k1.
|
|
50
|
+
*
|
|
51
|
+
* @returns The public key as an elliptic curve point.
|
|
52
|
+
*/
|
|
53
|
+
public getPublicKey() {
|
|
54
|
+
return this.publicKey;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Retrieves the private key of the KeyPair instance.
|
|
59
|
+
* The function returns a Promise that resolves to a Buffer containing the private key.
|
|
60
|
+
*
|
|
61
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
62
|
+
*/
|
|
63
|
+
public getPrivateKey() {
|
|
64
|
+
return Promise.resolve(this.privateKey);
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/key_store.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Point } from '@aztec/foundation/fields';
|
|
2
|
+
|
|
3
|
+
/** Represents a user public key. */
|
|
4
|
+
export type PublicKey = Point;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a secure storage for managing keys.
|
|
8
|
+
* Provides functionality to create and retrieve accounts, private and public keys,
|
|
9
|
+
*/
|
|
10
|
+
export interface KeyStore {
|
|
11
|
+
createAccount(): Promise<PublicKey>;
|
|
12
|
+
addAccount(privKey: Buffer): PublicKey;
|
|
13
|
+
getAccounts(): Promise<PublicKey[]>;
|
|
14
|
+
getAccountPrivateKey(pubKey: PublicKey): Promise<Buffer>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Curve } from '@aztec/circuits.js/barretenberg';
|
|
2
|
+
import { ConstantKeyPair, KeyPair } from './key_pair.js';
|
|
3
|
+
import { KeyStore, PublicKey } from './key_store.js';
|
|
4
|
+
import { Point } from '@aztec/circuits.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TestKeyStore is an implementation of the KeyStore interface, used for managing key pairs in a testing environment.
|
|
8
|
+
* It should be utilized in testing scenarios where secure key management is not required, and ease-of-use is prioritized.
|
|
9
|
+
*/
|
|
10
|
+
export class TestKeyStore implements KeyStore {
|
|
11
|
+
private accounts: KeyPair[] = [];
|
|
12
|
+
constructor(private curve: Curve) {}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Adds an account to the key store from the provided private key.
|
|
16
|
+
* @param curve - The curve to use for generating the public key.
|
|
17
|
+
* @param privKey - The private key of the account.
|
|
18
|
+
* @returns - The account's public key.
|
|
19
|
+
*/
|
|
20
|
+
public addAccount(privKey: Buffer): PublicKey {
|
|
21
|
+
const keyPair = ConstantKeyPair.fromPrivateKey(this.curve, privKey);
|
|
22
|
+
this.accounts.push(keyPair);
|
|
23
|
+
return keyPair.getPublicKey();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Adds a new account to the TestKeyStore with a randomly generated ConstantKeyPair.
|
|
28
|
+
* The account will have its own private and public key pair, which can be used for signing transactions.
|
|
29
|
+
* @param curve - The curve to use for generating the public key.
|
|
30
|
+
* @returns A promise that resolves to the newly created account's AztecAddress.
|
|
31
|
+
*/
|
|
32
|
+
public createAccount(): Promise<Point> {
|
|
33
|
+
const keyPair = ConstantKeyPair.random(this.curve);
|
|
34
|
+
this.accounts.push(keyPair);
|
|
35
|
+
return Promise.resolve(keyPair.getPublicKey());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves the public addresses of all accounts stored in the TestKeyStore.
|
|
40
|
+
* The returned addresses are instances of `AztecAddress` and can be used for subsequent operations
|
|
41
|
+
* such as signing transactions or fetching public/private keys.
|
|
42
|
+
*
|
|
43
|
+
* @returns A Promise that resolves to an array of AztecAddress instances.
|
|
44
|
+
*/
|
|
45
|
+
public getAccounts() {
|
|
46
|
+
return Promise.resolve(this.accounts.map(a => a.getPublicKey()));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves the private key of the account associated with the specified AztecAddress.
|
|
51
|
+
* Throws an error if the provided address is not found in the list of registered accounts.
|
|
52
|
+
*
|
|
53
|
+
* @param pubKey - The AztecAddress instance representing the account for which the private key is requested.
|
|
54
|
+
* @returns A Promise that resolves to a Buffer containing the private key.
|
|
55
|
+
* @deprecated We should not require a keystore to expose private keys in plain.
|
|
56
|
+
*/
|
|
57
|
+
public getAccountPrivateKey(pubKey: PublicKey): Promise<Buffer> {
|
|
58
|
+
const account = this.getAccount(pubKey);
|
|
59
|
+
return account.getPrivateKey();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Retrieve the KeyPair object associated with a given pub key.
|
|
64
|
+
* Searches through the 'accounts' array for a matching public key and returns the corresponding account (KeyPair).
|
|
65
|
+
* Throws an error if no matching account is found in the 'accounts'.
|
|
66
|
+
*
|
|
67
|
+
* @param pubKey - The public key of the account to retrieve.
|
|
68
|
+
* @returns The KeyPair object associated with the provided key.
|
|
69
|
+
*/
|
|
70
|
+
private getAccount(pubKey: PublicKey) {
|
|
71
|
+
const account = this.accounts.find(a => a.getPublicKey().equals(pubKey));
|
|
72
|
+
if (!account) {
|
|
73
|
+
throw new Error('Unknown account.');
|
|
74
|
+
}
|
|
75
|
+
return account;
|
|
76
|
+
}
|
|
77
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "..",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "dest",
|
|
5
|
+
"rootDir": "src",
|
|
6
|
+
"tsBuildInfoFile": ".tsbuildinfo"
|
|
7
|
+
},
|
|
8
|
+
"references": [
|
|
9
|
+
{
|
|
10
|
+
"path": "../circuits.js"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"path": "../foundation"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "../types"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"include": ["src"]
|
|
20
|
+
}
|