@aztec/foundation 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0
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/dest/array/index.d.ts +2 -1
- package/dest/array/index.d.ts.map +1 -1
- package/dest/array/index.js +1 -0
- package/dest/array/sorted_array.d.ts +15 -0
- package/dest/array/sorted_array.d.ts.map +1 -0
- package/dest/array/sorted_array.js +109 -0
- package/dest/bigint-buffer/index.d.ts +1 -1
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +6 -1
- package/dest/branded-types/block_number.d.ts +6 -3
- package/dest/branded-types/block_number.d.ts.map +1 -1
- package/dest/branded-types/block_number.js +18 -4
- package/dest/branded-types/buffer32_hash.d.ts +27 -0
- package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
- package/dest/branded-types/buffer32_hash.js +12 -0
- package/dest/branded-types/checkpoint_number.d.ts +17 -3
- package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
- package/dest/branded-types/checkpoint_number.js +28 -8
- package/dest/branded-types/epoch.d.ts +2 -2
- package/dest/branded-types/epoch.d.ts.map +1 -1
- package/dest/branded-types/index.d.ts +4 -2
- package/dest/branded-types/index.d.ts.map +1 -1
- package/dest/branded-types/index.js +3 -1
- package/dest/branded-types/index_within_checkpoint.d.ts +42 -0
- package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -0
- package/dest/branded-types/index_within_checkpoint.js +59 -0
- package/dest/branded-types/slot.d.ts +5 -2
- package/dest/branded-types/slot.d.ts.map +1 -1
- package/dest/branded-types/slot.js +3 -0
- package/dest/buffer/buffer16.d.ts +7 -2
- package/dest/buffer/buffer16.d.ts.map +1 -1
- package/dest/buffer/buffer16.js +4 -2
- package/dest/buffer/buffer32.d.ts +29 -59
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +33 -65
- package/dest/buffer/index.d.ts +2 -1
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/buffer/utils.d.ts +3 -0
- package/dest/buffer/utils.d.ts.map +1 -0
- package/dest/buffer/utils.js +7 -0
- package/dest/collection/array.d.ts +22 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +84 -0
- package/dest/collection/index.d.ts +3 -1
- package/dest/collection/index.d.ts.map +1 -1
- package/dest/collection/index.js +2 -0
- package/dest/collection/lru_map.d.ts +41 -0
- package/dest/collection/lru_map.d.ts.map +1 -0
- package/dest/collection/lru_map.js +119 -0
- package/dest/collection/lru_set.d.ts +35 -0
- package/dest/collection/lru_set.d.ts.map +1 -0
- package/dest/collection/lru_set.js +95 -0
- package/dest/committable/committable.js +1 -1
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +79 -38
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +103 -64
- package/dest/config/network_config.d.ts +17 -31
- package/dest/config/network_config.d.ts.map +1 -1
- package/dest/config/network_config.js +6 -1
- package/dest/config/network_name.d.ts +2 -2
- package/dest/config/network_name.d.ts.map +1 -1
- package/dest/config/network_name.js +3 -3
- package/dest/config/parse-env.d.ts +3 -0
- package/dest/config/parse-env.d.ts.map +1 -0
- package/dest/config/parse-env.js +7 -0
- package/dest/config/secret_value.d.ts +2 -2
- package/dest/config/secret_value.d.ts.map +1 -1
- package/dest/config/secret_value.js +3 -1
- package/dest/crypto/aes128/index.d.ts +2 -1
- package/dest/crypto/aes128/index.d.ts.map +1 -1
- package/dest/crypto/aes128/index.js +11 -2
- package/dest/crypto/bls/bn254_keystore.d.ts +10 -177
- package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
- package/dest/crypto/bls/bn254_keystore.js +23 -35
- package/dest/crypto/bls/index.js +1 -1
- package/dest/crypto/bn254/index.d.ts +35 -51
- package/dest/crypto/bn254/index.d.ts.map +1 -1
- package/dest/crypto/bn254/index.js +51 -140
- package/dest/crypto/ecdsa/signature.d.ts +11 -2
- package/dest/crypto/ecdsa/signature.d.ts.map +1 -1
- package/dest/crypto/ecdsa/signature.js +2 -2
- package/dest/crypto/grumpkin/index.d.ts +4 -2
- package/dest/crypto/grumpkin/index.d.ts.map +1 -1
- package/dest/crypto/grumpkin/index.js +2 -1
- package/dest/crypto/keys/index.d.ts +4 -3
- package/dest/crypto/keys/index.d.ts.map +1 -1
- package/dest/crypto/keys/index.js +31 -7
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -2
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +1 -1
- package/dest/crypto/poseidon/index.d.ts +2 -3
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +41 -43
- package/dest/crypto/random/randomness_singleton.d.ts +4 -3
- package/dest/crypto/random/randomness_singleton.d.ts.map +1 -1
- package/dest/crypto/random/randomness_singleton.js +5 -5
- package/dest/crypto/schnorr/index.d.ts +10 -8
- package/dest/crypto/schnorr/index.d.ts.map +1 -1
- package/dest/crypto/schnorr/index.js +7 -7
- package/dest/crypto/schnorr/signature.d.ts +10 -30
- package/dest/crypto/schnorr/signature.d.ts.map +1 -1
- package/dest/crypto/schnorr/signature.js +21 -37
- package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +26 -0
- package/dest/crypto/sha256/index.d.ts +2 -2
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +1 -1
- package/dest/crypto/sha512/index.d.ts +2 -2
- package/dest/crypto/sha512/index.d.ts.map +1 -1
- package/dest/crypto/sha512/index.js +1 -1
- package/dest/crypto/signature/index.d.ts +2 -2
- package/dest/crypto/signature/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.d.ts +2 -2
- package/dest/crypto/sync/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/sync/pedersen/index.js +1 -1
- package/dest/crypto/sync/poseidon/index.d.ts +2 -3
- package/dest/crypto/sync/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/sync/poseidon/index.js +1 -9
- package/dest/{fields/bls12_fields.d.ts → curves/bls12/field.d.ts} +5 -5
- package/dest/curves/bls12/field.d.ts.map +1 -0
- package/dest/{fields/bls12_fields.js → curves/bls12/field.js} +11 -13
- package/dest/curves/bls12/index.d.ts +3 -0
- package/dest/curves/bls12/index.d.ts.map +1 -0
- package/dest/curves/bls12/index.js +2 -0
- package/dest/{fields/bls12_point.d.ts → curves/bls12/point.d.ts} +14 -5
- package/dest/curves/bls12/point.d.ts.map +1 -0
- package/dest/{fields/bls12_point.js → curves/bls12/point.js} +10 -8
- package/dest/curves/bn254/field.d.ts +185 -0
- package/dest/curves/bn254/field.d.ts.map +1 -0
- package/dest/{fields/fields.js → curves/bn254/field.js} +57 -62
- package/dest/curves/bn254/index.d.ts +3 -0
- package/dest/curves/bn254/index.d.ts.map +1 -0
- package/dest/curves/bn254/index.js +2 -0
- package/dest/curves/bn254/point.d.ts +54 -0
- package/dest/curves/bn254/point.d.ts.map +1 -0
- package/dest/curves/bn254/point.js +143 -0
- package/dest/curves/grumpkin/index.d.ts +10 -0
- package/dest/curves/grumpkin/index.d.ts.map +1 -0
- package/dest/curves/grumpkin/index.js +3 -0
- package/dest/{fields → curves/grumpkin}/point.d.ts +23 -28
- package/dest/curves/grumpkin/point.d.ts.map +1 -0
- package/dest/{fields → curves/grumpkin}/point.js +35 -49
- package/dest/error/index.d.ts +4 -4
- package/dest/error/index.d.ts.map +1 -1
- package/dest/eth-address/index.d.ts +4 -3
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +10 -6
- package/dest/eth-signature/eth_signature.d.ts +6 -2
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +7 -2
- package/dest/fifo/fifo_frame_reader.d.ts +41 -0
- package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
- package/dest/fifo/fifo_frame_reader.js +91 -0
- package/dest/fifo/index.d.ts +2 -0
- package/dest/fifo/index.d.ts.map +1 -0
- package/dest/fifo/index.js +1 -0
- package/dest/fifo_set/fifo_set.d.ts +15 -0
- package/dest/fifo_set/fifo_set.d.ts.map +1 -0
- package/dest/fifo_set/fifo_set.js +39 -0
- package/dest/fifo_set/index.d.ts +2 -0
- package/dest/fifo_set/index.d.ts.map +1 -0
- package/dest/fifo_set/index.js +1 -0
- package/dest/iterator/filter.d.ts +3 -0
- package/dest/iterator/filter.d.ts.map +1 -0
- package/dest/iterator/filter.js +7 -0
- package/dest/iterator/index.d.ts +2 -0
- package/dest/iterator/index.d.ts.map +1 -0
- package/dest/iterator/index.js +1 -0
- package/dest/jest/setup.js +28 -1
- package/dest/json-rpc/client/fetch.d.ts +1 -1
- package/dest/json-rpc/client/fetch.d.ts.map +1 -1
- package/dest/json-rpc/client/fetch.js +4 -3
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +3 -3
- package/dest/json-rpc/client/undici.d.ts +1 -1
- package/dest/json-rpc/client/undici.d.ts.map +1 -1
- package/dest/json-rpc/client/undici.js +23 -4
- package/dest/json-rpc/fixtures/class_a.d.ts +3 -3
- package/dest/json-rpc/fixtures/class_a.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/class_b.d.ts +3 -3
- package/dest/json-rpc/fixtures/class_b.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.js +57 -17
- package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
- package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
- package/dest/json-rpc/server/api_key_auth.js +57 -0
- package/dest/json-rpc/server/index.d.ts +2 -1
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/safe_json_rpc_server.js +28 -14
- package/dest/log/bigint-utils.d.ts +5 -0
- package/dest/log/bigint-utils.d.ts.map +1 -0
- package/dest/log/bigint-utils.js +21 -0
- package/dest/log/gcloud-logger-config.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +3 -0
- package/dest/log/libp2p_logger.d.ts +5 -2
- package/dest/log/libp2p_logger.d.ts.map +1 -1
- package/dest/log/libp2p_logger.js +14 -4
- package/dest/log/log-filters.d.ts +17 -4
- package/dest/log/log-filters.d.ts.map +1 -1
- package/dest/log/log-filters.js +26 -12
- package/dest/log/pino-logger-server.d.ts +9 -0
- package/dest/log/pino-logger-server.d.ts.map +1 -0
- package/dest/log/pino-logger-server.js +18 -0
- package/dest/log/pino-logger.d.ts +37 -8
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +138 -30
- package/dest/noir/noir_package_config.d.ts +19 -104
- package/dest/noir/noir_package_config.d.ts.map +1 -1
- package/dest/noir/noir_package_config.js +1 -1
- package/dest/promise/running-promise.d.ts +5 -4
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +7 -3
- package/dest/queue/base_memory_queue.d.ts +2 -2
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.d.ts +1 -1
- package/dest/queue/batch_queue.d.ts.map +1 -1
- package/dest/queue/batch_queue.js +1 -0
- package/dest/queue/semaphore.d.ts +5 -1
- package/dest/queue/semaphore.d.ts.map +1 -1
- package/dest/retry/index.d.ts +41 -3
- package/dest/retry/index.d.ts.map +1 -1
- package/dest/retry/index.js +55 -2
- package/dest/schemas/api.d.ts +12 -10
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/schemas/api.js +7 -1
- package/dest/schemas/parse.d.ts +4 -4
- package/dest/schemas/parse.d.ts.map +1 -1
- package/dest/schemas/parse.js +6 -5
- package/dest/schemas/schemas.d.ts +20 -16
- package/dest/schemas/schemas.d.ts.map +1 -1
- package/dest/schemas/schemas.js +9 -3
- package/dest/schemas/types.d.ts +32 -2
- package/dest/schemas/types.d.ts.map +1 -1
- package/dest/schemas/types.js +25 -1
- package/dest/schemas/utils.d.ts +7 -11
- package/dest/schemas/utils.d.ts.map +1 -1
- package/dest/schemas/utils.js +2 -18
- package/dest/serialize/buffer_reader.d.ts +14 -4
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +26 -4
- package/dest/serialize/buffer_sink.d.ts +134 -0
- package/dest/serialize/buffer_sink.d.ts.map +1 -0
- package/dest/serialize/buffer_sink.js +297 -0
- package/dest/serialize/field_reader.d.ts +2 -2
- package/dest/serialize/field_reader.d.ts.map +1 -1
- package/dest/serialize/field_reader.js +1 -1
- package/dest/serialize/free_funcs.d.ts +2 -2
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +1 -1
- package/dest/serialize/index.d.ts +2 -1
- package/dest/serialize/index.d.ts.map +1 -1
- package/dest/serialize/index.js +1 -0
- package/dest/serialize/serialize.d.ts +20 -2
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +32 -1
- package/dest/sleep/index.d.ts +4 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/sleep/index.js +14 -1
- package/dest/string/index.js +1 -1
- package/dest/testing/files/index.d.ts +2 -3
- package/dest/testing/files/index.d.ts.map +1 -1
- package/dest/testing/files/index.js +1 -2
- package/dest/timer/date.d.ts +26 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +36 -0
- package/dest/timer/index.d.ts +2 -2
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +1 -1
- package/dest/timer/timeout.d.ts +3 -1
- package/dest/timer/timeout.d.ts.map +1 -1
- package/dest/timer/timeout.js +26 -0
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
- package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
- package/dest/transport/index.d.ts +1 -2
- package/dest/transport/index.d.ts.map +1 -1
- package/dest/transport/index.js +0 -1
- package/dest/transport/transport_client.js +2 -2
- package/dest/trees/balanced_merkle_tree_root.d.ts +16 -0
- package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/{balanced_merkle_tree.js → balanced_merkle_tree_root.js} +3 -17
- package/dest/trees/hasher.d.ts +4 -1
- package/dest/trees/hasher.d.ts.map +1 -1
- package/dest/trees/hasher.js +10 -5
- package/dest/trees/index.d.ts +4 -4
- package/dest/trees/index.d.ts.map +1 -1
- package/dest/trees/index.js +3 -3
- package/dest/trees/indexed_merkle_tree.js +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
- package/dest/trees/membership_witness.d.ts +9 -3
- package/dest/trees/membership_witness.d.ts.map +1 -1
- package/dest/trees/membership_witness.js +1 -1
- package/dest/trees/merkle_tree_calculator.d.ts +4 -2
- package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/merkle_tree_calculator.js +1 -5
- package/dest/trees/sibling_path.d.ts +7 -5
- package/dest/trees/sibling_path.d.ts.map +1 -1
- package/dest/trees/sibling_path.js +11 -9
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts +2 -3
- package/dest/trees/unbalanced_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/unbalanced_merkle_tree_calculator.js +1 -5
- package/dest/trees/{unbalanced_merkle_tree.d.ts → unbalanced_merkle_tree_root.d.ts} +4 -7
- package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -0
- package/dest/trees/{unbalanced_merkle_tree.js → unbalanced_merkle_tree_root.js} +12 -51
- package/dest/trees/unbalanced_tree_store.d.ts +5 -1
- package/dest/trees/unbalanced_tree_store.d.ts.map +1 -1
- package/dest/trees/unbalanced_tree_store.js +49 -1
- package/dest/types/index.d.ts +28 -2
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +21 -0
- package/package.json +50 -9
- package/src/array/index.ts +1 -0
- package/src/array/sorted_array.ts +138 -0
- package/src/bigint-buffer/index.ts +6 -1
- package/src/branded-types/block_number.ts +25 -2
- package/src/branded-types/buffer32_hash.ts +38 -0
- package/src/branded-types/checkpoint_number.ts +37 -7
- package/src/branded-types/epoch.ts +1 -1
- package/src/branded-types/index.ts +3 -1
- package/src/branded-types/index_within_checkpoint.ts +88 -0
- package/src/branded-types/slot.ts +6 -1
- package/src/buffer/buffer16.ts +5 -2
- package/src/buffer/buffer32.ts +41 -70
- package/src/buffer/index.ts +1 -0
- package/src/buffer/utils.ts +8 -0
- package/src/collection/array.ts +86 -0
- package/src/collection/index.ts +2 -0
- package/src/collection/lru_map.ts +143 -0
- package/src/collection/lru_set.ts +115 -0
- package/src/committable/committable.ts +1 -1
- package/src/config/env_var.ts +127 -34
- package/src/config/index.ts +183 -114
- package/src/config/network_config.ts +5 -0
- package/src/config/network_name.ts +6 -6
- package/src/config/parse-env.ts +4 -0
- package/src/config/secret_value.ts +1 -1
- package/src/crypto/aes128/index.ts +11 -2
- package/src/crypto/bls/bn254_keystore.ts +34 -44
- package/src/crypto/bls/index.ts +1 -1
- package/src/crypto/bn254/index.ts +50 -159
- package/src/crypto/ecdsa/signature.ts +2 -2
- package/src/crypto/grumpkin/index.ts +3 -1
- package/src/crypto/keys/index.ts +21 -5
- package/src/crypto/pedersen/pedersen.wasm.ts +1 -1
- package/src/crypto/poseidon/index.ts +43 -45
- package/src/crypto/random/randomness_singleton.ts +6 -4
- package/src/crypto/schnorr/index.ts +11 -9
- package/src/crypto/schnorr/signature.ts +18 -47
- package/src/crypto/secp256k1-signer/utils.ts +32 -0
- package/src/crypto/sha256/index.ts +1 -1
- package/src/crypto/sha512/index.ts +1 -1
- package/src/crypto/signature/index.ts +1 -1
- package/src/crypto/sync/pedersen/index.ts +1 -1
- package/src/crypto/sync/poseidon/index.ts +1 -10
- package/src/{fields/bls12_fields.ts → curves/bls12/field.ts} +5 -12
- package/src/curves/bls12/index.ts +2 -0
- package/src/{fields/bls12_point.ts → curves/bls12/point.ts} +7 -7
- package/src/{fields/fields.ts → curves/bn254/field.ts} +68 -86
- package/src/curves/bn254/index.ts +2 -0
- package/src/curves/bn254/point.ts +170 -0
- package/src/curves/grumpkin/index.ts +11 -0
- package/src/{fields → curves/grumpkin}/point.ts +29 -46
- package/src/eth-address/index.ts +8 -6
- package/src/eth-signature/eth_signature.ts +7 -1
- package/src/fifo/fifo_frame_reader.ts +113 -0
- package/src/fifo/index.ts +1 -0
- package/src/fifo_set/fifo_set.ts +52 -0
- package/src/fifo_set/index.ts +1 -0
- package/src/iterator/filter.ts +11 -0
- package/src/iterator/index.ts +1 -0
- package/src/jest/setup.mjs +31 -1
- package/src/json-rpc/client/fetch.ts +4 -3
- package/src/json-rpc/client/safe_json_rpc_client.ts +4 -2
- package/src/json-rpc/client/undici.ts +23 -3
- package/src/json-rpc/fixtures/test_state.ts +10 -10
- package/src/json-rpc/server/api_key_auth.ts +63 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/json-rpc/server/safe_json_rpc_server.ts +32 -14
- package/src/log/bigint-utils.ts +25 -0
- package/src/log/gcloud-logger-config.ts +5 -0
- package/src/log/libp2p_logger.ts +12 -5
- package/src/log/log-filters.ts +29 -11
- package/src/log/pino-logger-server.ts +25 -0
- package/src/log/pino-logger.ts +162 -40
- package/src/noir/noir_package_config.ts +32 -20
- package/src/promise/running-promise.ts +8 -5
- package/src/queue/base_memory_queue.ts +1 -1
- package/src/queue/batch_queue.ts +1 -0
- package/src/queue/semaphore.ts +5 -0
- package/src/retry/index.ts +84 -4
- package/src/schemas/api.ts +25 -25
- package/src/schemas/parse.ts +9 -6
- package/src/schemas/schemas.ts +17 -6
- package/src/schemas/types.ts +34 -1
- package/src/schemas/utils.ts +4 -38
- package/src/serialize/buffer_reader.ts +36 -9
- package/src/serialize/buffer_sink.ts +350 -0
- package/src/serialize/field_reader.ts +1 -1
- package/src/serialize/free_funcs.ts +1 -1
- package/src/serialize/index.ts +1 -0
- package/src/serialize/serialize.ts +33 -1
- package/src/sleep/index.ts +16 -1
- package/src/string/index.ts +1 -1
- package/src/testing/files/index.ts +1 -2
- package/src/timer/date.ts +52 -0
- package/src/timer/index.ts +1 -1
- package/src/timer/timeout.ts +31 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
- package/src/transport/index.ts +0 -1
- package/src/transport/transport_client.ts +2 -2
- package/src/trees/{balanced_merkle_tree.ts → balanced_merkle_tree_root.ts} +3 -20
- package/src/trees/hasher.ts +12 -0
- package/src/trees/index.ts +3 -3
- package/src/trees/indexed_merkle_tree.ts +1 -1
- package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
- package/src/trees/membership_witness.ts +1 -1
- package/src/trees/merkle_tree_calculator.ts +4 -10
- package/src/trees/sibling_path.ts +12 -7
- package/src/trees/unbalanced_merkle_tree_calculator.ts +1 -12
- package/src/trees/{unbalanced_merkle_tree.ts → unbalanced_merkle_tree_root.ts} +17 -64
- package/src/trees/unbalanced_tree_store.ts +57 -2
- package/src/types/index.ts +58 -1
- package/dest/crypto/bn254/bn254_utils.d.ts +0 -39
- package/dest/crypto/bn254/bn254_utils.d.ts.map +0 -1
- package/dest/crypto/bn254/bn254_utils.js +0 -56
- package/dest/crypto/index.d.ts +0 -17
- package/dest/crypto/index.d.ts.map +0 -1
- package/dest/crypto/index.js +0 -16
- package/dest/crypto/serialize.d.ts +0 -51
- package/dest/crypto/serialize.d.ts.map +0 -1
- package/dest/crypto/serialize.js +0 -68
- package/dest/fields/bls12_fields.d.ts.map +0 -1
- package/dest/fields/bls12_point.d.ts.map +0 -1
- package/dest/fields/coordinate.d.ts +0 -63
- package/dest/fields/coordinate.d.ts.map +0 -1
- package/dest/fields/coordinate.js +0 -96
- package/dest/fields/fields.d.ts +0 -188
- package/dest/fields/fields.d.ts.map +0 -1
- package/dest/fields/index.d.ts +0 -6
- package/dest/fields/index.d.ts.map +0 -1
- package/dest/fields/index.js +0 -5
- package/dest/fields/point.d.ts.map +0 -1
- package/dest/index.d.ts +0 -31
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -31
- package/dest/json-rpc/server/telemetry.d.ts +0 -2
- package/dest/json-rpc/server/telemetry.d.ts.map +0 -1
- package/dest/json-rpc/server/telemetry.js +0 -0
- package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
- package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
- package/dest/trees/balanced_merkle_tree.d.ts +0 -22
- package/dest/trees/balanced_merkle_tree.d.ts.map +0 -1
- package/dest/trees/unbalanced_merkle_tree.d.ts.map +0 -1
- package/src/crypto/bn254/bn254_utils.ts +0 -64
- package/src/crypto/index.ts +0 -16
- package/src/crypto/serialize.ts +0 -85
- package/src/fields/coordinate.ts +0 -104
- package/src/fields/index.ts +0 -5
- package/src/index.ts +0 -31
- package/src/json-rpc/server/telemetry.ts +0 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
|
@@ -20,186 +20,28 @@ declare const bn254KeystoreSchema: z.ZodObject<{
|
|
|
20
20
|
c: z.ZodNumber;
|
|
21
21
|
prf: z.ZodString;
|
|
22
22
|
salt: z.ZodString;
|
|
23
|
-
},
|
|
24
|
-
dklen: number;
|
|
25
|
-
c: number;
|
|
26
|
-
prf: string;
|
|
27
|
-
salt: string;
|
|
28
|
-
}, {
|
|
29
|
-
dklen: number;
|
|
30
|
-
c: number;
|
|
31
|
-
prf: string;
|
|
32
|
-
salt: string;
|
|
33
|
-
}>;
|
|
23
|
+
}, z.core.$strip>;
|
|
34
24
|
message: z.ZodString;
|
|
35
|
-
},
|
|
36
|
-
function: "pbkdf2";
|
|
37
|
-
params: {
|
|
38
|
-
dklen: number;
|
|
39
|
-
c: number;
|
|
40
|
-
prf: string;
|
|
41
|
-
salt: string;
|
|
42
|
-
};
|
|
43
|
-
message: string;
|
|
44
|
-
}, {
|
|
45
|
-
function: "pbkdf2";
|
|
46
|
-
params: {
|
|
47
|
-
dklen: number;
|
|
48
|
-
c: number;
|
|
49
|
-
prf: string;
|
|
50
|
-
salt: string;
|
|
51
|
-
};
|
|
52
|
-
message: string;
|
|
53
|
-
}>;
|
|
25
|
+
}, z.core.$strip>;
|
|
54
26
|
checksum: z.ZodObject<{
|
|
55
27
|
function: z.ZodLiteral<"sha256">;
|
|
56
|
-
params: z.ZodObject<{},
|
|
28
|
+
params: z.ZodObject<{}, z.core.$strip>;
|
|
57
29
|
message: z.ZodString;
|
|
58
|
-
},
|
|
59
|
-
function: "sha256";
|
|
60
|
-
params: {};
|
|
61
|
-
message: string;
|
|
62
|
-
}, {
|
|
63
|
-
function: "sha256";
|
|
64
|
-
params: {};
|
|
65
|
-
message: string;
|
|
66
|
-
}>;
|
|
30
|
+
}, z.core.$strip>;
|
|
67
31
|
cipher: z.ZodObject<{
|
|
68
32
|
function: z.ZodLiteral<"aes-128-ctr">;
|
|
69
33
|
params: z.ZodObject<{
|
|
70
34
|
iv: z.ZodString;
|
|
71
|
-
},
|
|
72
|
-
iv: string;
|
|
73
|
-
}, {
|
|
74
|
-
iv: string;
|
|
75
|
-
}>;
|
|
35
|
+
}, z.core.$strip>;
|
|
76
36
|
message: z.ZodString;
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
params: {
|
|
80
|
-
iv: string;
|
|
81
|
-
};
|
|
82
|
-
message: string;
|
|
83
|
-
}, {
|
|
84
|
-
function: "aes-128-ctr";
|
|
85
|
-
params: {
|
|
86
|
-
iv: string;
|
|
87
|
-
};
|
|
88
|
-
message: string;
|
|
89
|
-
}>;
|
|
90
|
-
}, "strip", z.ZodTypeAny, {
|
|
91
|
-
kdf: {
|
|
92
|
-
function: "pbkdf2";
|
|
93
|
-
params: {
|
|
94
|
-
dklen: number;
|
|
95
|
-
c: number;
|
|
96
|
-
prf: string;
|
|
97
|
-
salt: string;
|
|
98
|
-
};
|
|
99
|
-
message: string;
|
|
100
|
-
};
|
|
101
|
-
checksum: {
|
|
102
|
-
function: "sha256";
|
|
103
|
-
params: {};
|
|
104
|
-
message: string;
|
|
105
|
-
};
|
|
106
|
-
cipher: {
|
|
107
|
-
function: "aes-128-ctr";
|
|
108
|
-
params: {
|
|
109
|
-
iv: string;
|
|
110
|
-
};
|
|
111
|
-
message: string;
|
|
112
|
-
};
|
|
113
|
-
}, {
|
|
114
|
-
kdf: {
|
|
115
|
-
function: "pbkdf2";
|
|
116
|
-
params: {
|
|
117
|
-
dklen: number;
|
|
118
|
-
c: number;
|
|
119
|
-
prf: string;
|
|
120
|
-
salt: string;
|
|
121
|
-
};
|
|
122
|
-
message: string;
|
|
123
|
-
};
|
|
124
|
-
checksum: {
|
|
125
|
-
function: "sha256";
|
|
126
|
-
params: {};
|
|
127
|
-
message: string;
|
|
128
|
-
};
|
|
129
|
-
cipher: {
|
|
130
|
-
function: "aes-128-ctr";
|
|
131
|
-
params: {
|
|
132
|
-
iv: string;
|
|
133
|
-
};
|
|
134
|
-
message: string;
|
|
135
|
-
};
|
|
136
|
-
}>;
|
|
37
|
+
}, z.core.$strip>;
|
|
38
|
+
}, z.core.$strip>;
|
|
137
39
|
description: z.ZodOptional<z.ZodString>;
|
|
138
40
|
pubkey: z.ZodString;
|
|
139
41
|
path: z.ZodString;
|
|
140
42
|
uuid: z.ZodString;
|
|
141
43
|
version: z.ZodNumber;
|
|
142
|
-
},
|
|
143
|
-
crypto: {
|
|
144
|
-
kdf: {
|
|
145
|
-
function: "pbkdf2";
|
|
146
|
-
params: {
|
|
147
|
-
dklen: number;
|
|
148
|
-
c: number;
|
|
149
|
-
prf: string;
|
|
150
|
-
salt: string;
|
|
151
|
-
};
|
|
152
|
-
message: string;
|
|
153
|
-
};
|
|
154
|
-
checksum: {
|
|
155
|
-
function: "sha256";
|
|
156
|
-
params: {};
|
|
157
|
-
message: string;
|
|
158
|
-
};
|
|
159
|
-
cipher: {
|
|
160
|
-
function: "aes-128-ctr";
|
|
161
|
-
params: {
|
|
162
|
-
iv: string;
|
|
163
|
-
};
|
|
164
|
-
message: string;
|
|
165
|
-
};
|
|
166
|
-
};
|
|
167
|
-
description?: string | undefined;
|
|
168
|
-
pubkey: string;
|
|
169
|
-
path: string;
|
|
170
|
-
uuid: string;
|
|
171
|
-
version: number;
|
|
172
|
-
}, {
|
|
173
|
-
crypto: {
|
|
174
|
-
kdf: {
|
|
175
|
-
function: "pbkdf2";
|
|
176
|
-
params: {
|
|
177
|
-
dklen: number;
|
|
178
|
-
c: number;
|
|
179
|
-
prf: string;
|
|
180
|
-
salt: string;
|
|
181
|
-
};
|
|
182
|
-
message: string;
|
|
183
|
-
};
|
|
184
|
-
checksum: {
|
|
185
|
-
function: "sha256";
|
|
186
|
-
params: {};
|
|
187
|
-
message: string;
|
|
188
|
-
};
|
|
189
|
-
cipher: {
|
|
190
|
-
function: "aes-128-ctr";
|
|
191
|
-
params: {
|
|
192
|
-
iv: string;
|
|
193
|
-
};
|
|
194
|
-
message: string;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
description?: string | undefined;
|
|
198
|
-
pubkey: string;
|
|
199
|
-
path: string;
|
|
200
|
-
uuid: string;
|
|
201
|
-
version: number;
|
|
202
|
-
}>;
|
|
44
|
+
}, z.core.$strip>;
|
|
203
45
|
/**
|
|
204
46
|
* Error thrown when BN254 keystore operations fail
|
|
205
47
|
*/
|
|
@@ -256,7 +98,7 @@ export interface Bn254KeystoreInterface {
|
|
|
256
98
|
* @returns BN254 keystore object ready to be serialized to JSON
|
|
257
99
|
* @throws Error if private key is not 32-byte hex
|
|
258
100
|
*/
|
|
259
|
-
export declare function createBn254Keystore(password: string, privateKeyHex: string, pubkeyHex: string, derivationPath: string): Bn254Keystore
|
|
101
|
+
export declare function createBn254Keystore(password: string, privateKeyHex: string, pubkeyHex: string, derivationPath: string): Promise<Bn254Keystore>;
|
|
260
102
|
/**
|
|
261
103
|
* Loads and validates a BN254 keystore file.
|
|
262
104
|
*
|
|
@@ -283,14 +125,5 @@ export declare function decryptBn254Keystore(filePath: string, password: string)
|
|
|
283
125
|
* @throws Bn254KeystoreError if decryption fails or checksum is invalid
|
|
284
126
|
*/
|
|
285
127
|
export declare function decryptBn254KeystoreFromObject(keystore: Bn254Keystore, password: string): string;
|
|
286
|
-
/**
|
|
287
|
-
* Validates that a decrypted private key matches the public key in the keystore.
|
|
288
|
-
*
|
|
289
|
-
* @param privateKeyHex - Decrypted private key (0x-prefixed)
|
|
290
|
-
* @param expectedPubkey - Expected public key from keystore
|
|
291
|
-
* @param computePublicKey - Function to compute public key from private key
|
|
292
|
-
* @returns true if keys match, false otherwise
|
|
293
|
-
*/
|
|
294
|
-
export declare function verifyBn254Keypair(privateKeyHex: string, expectedPubkey: string, computePublicKey: (privateKey: string) => string): boolean;
|
|
295
128
|
export {};
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm4yNTRfa2V5c3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vYmxzL2JuMjU0X2tleXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7Ozs7Ozs7O0dBUUc7QUFFSDs7R0FFRztBQUNILFFBQUEsTUFBTSxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE4QnZCLENBQUM7QUFFSDs7R0FFRztBQUNILHFCQUFhLGtCQUFtQixTQUFRLEtBQUs7SUFHekIsS0FBSyxDQUFDO0lBRnhCLFlBQ0UsT0FBTyxFQUFFLE1BQU0sRUFDQyxLQUFLLENBQUMsbUJBQU8sRUFJOUI7Q0FDRjtBQUVELE1BQU0sTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLG1CQUFtQixDQUFDLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsTUFBTSxDQUFDO2dCQUNkLENBQUMsRUFBRSxNQUFNLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLE1BQU0sQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ2QsQ0FBQztZQUNGLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDakIsQ0FBQztRQUNGLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUNqQixDQUFDO1FBQ0YsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLGFBQWEsQ0FBQztZQUN4QixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLE1BQU0sQ0FBQzthQUNaLENBQUM7WUFDRixPQUFPLEVBQUUsTUFBTSxDQUFDO1NBQ2pCLENBQUM7S0FDSCxDQUFDO0lBQ0YsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDO0NBQ2pCO0FBdUREOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHdCQUFzQixtQkFBbUIsQ0FDdkMsUUFBUSxFQUFFLE1BQU0sRUFDaEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsU0FBUyxFQUFFLE1BQU0sRUFDakIsY0FBYyxFQUFFLE1BQU0sR0FDckIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUt4QjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FnQmpFO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUcvRTtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsOEJBQThCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FpRGhHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bn254_keystore.d.ts","sourceRoot":"","sources":["../../../src/crypto/bls/bn254_keystore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bn254_keystore.d.ts","sourceRoot":"","sources":["../../../src/crypto/bls/bn254_keystore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BvB,CAAC;AAEH;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGzB,KAAK,CAAC;IAFxB,YACE,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,mBAAO,EAI9B;CACF;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QACN,GAAG,EAAE;YACH,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC;gBACd,CAAC,EAAE,MAAM,CAAC;gBACV,GAAG,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,MAAM,EAAE;YACN,QAAQ,EAAE,aAAa,CAAC;YACxB,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC;aACZ,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAuDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAgBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiDhG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
-
import { createCipheriv, createDecipheriv, createHash, pbkdf2Sync, randomUUID } from 'crypto';
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
|
+
import { createCipheriv, createDecipheriv, createHash, pbkdf2, pbkdf2Sync, randomUUID } from 'crypto';
|
|
3
3
|
import { readFileSync } from 'fs';
|
|
4
|
+
import { promisify } from 'util';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
/**
|
|
6
7
|
* BN254 Keystore Format
|
|
@@ -52,27 +53,13 @@ import { z } from 'zod';
|
|
|
52
53
|
this.name = 'Bn254KeystoreError';
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
*
|
|
58
|
-
* Uses PBKDF2 with SHA-256 for key derivation and AES-128-CTR for encryption,
|
|
59
|
-
* following the EIP-2335 specification format.
|
|
60
|
-
*
|
|
61
|
-
* @param password - Password for encrypting the private key
|
|
62
|
-
* @param privateKeyHex - Private key as 0x-prefixed hex string (32 bytes)
|
|
63
|
-
* @param pubkeyHex - Public key as hex string (compressed or uncompressed)
|
|
64
|
-
* @param derivationPath - BIP-44 style derivation path (e.g., "m/12381/3600/0/0/0")
|
|
65
|
-
* @returns BN254 keystore object ready to be serialized to JSON
|
|
66
|
-
* @throws Error if private key is not 32-byte hex
|
|
67
|
-
*/ export function createBn254Keystore(password, privateKeyHex, pubkeyHex, derivationPath) {
|
|
56
|
+
const pbkdf2Async = promisify(pbkdf2);
|
|
57
|
+
function createBn254KeystoreFromDerivedKey(privateKeyHex, pubkeyHex, derivationPath, salt, iv, dk) {
|
|
68
58
|
const ensureHex = (hex)=>hex.replace(/^0x/i, '');
|
|
69
59
|
const privHex = ensureHex(privateKeyHex);
|
|
70
60
|
if (!/^[0-9a-fA-F]{64}$/.test(privHex)) {
|
|
71
61
|
throw new Error('BLS private key must be 32-byte hex');
|
|
72
62
|
}
|
|
73
|
-
const salt = randomBytes(32);
|
|
74
|
-
const iv = randomBytes(16);
|
|
75
|
-
const dk = pbkdf2Sync(Buffer.from(password.normalize('NFKD'), 'utf8'), salt, 262144, 32, 'sha256');
|
|
76
63
|
const cipherKey = dk.subarray(0, 16);
|
|
77
64
|
const cipher = createCipheriv('aes-128-ctr', cipherKey, iv);
|
|
78
65
|
const plaintext = Buffer.from(privHex, 'hex');
|
|
@@ -117,6 +104,24 @@ import { z } from 'zod';
|
|
|
117
104
|
version: 4
|
|
118
105
|
};
|
|
119
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Creates a BN254 keystore object for a BN254 BLS private key.
|
|
109
|
+
*
|
|
110
|
+
* Uses PBKDF2 with SHA-256 for key derivation and AES-128-CTR for encryption,
|
|
111
|
+
* following the EIP-2335 specification format.
|
|
112
|
+
*
|
|
113
|
+
* @param password - Password for encrypting the private key
|
|
114
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string (32 bytes)
|
|
115
|
+
* @param pubkeyHex - Public key as hex string (compressed or uncompressed)
|
|
116
|
+
* @param derivationPath - BIP-44 style derivation path (e.g., "m/12381/3600/0/0/0")
|
|
117
|
+
* @returns BN254 keystore object ready to be serialized to JSON
|
|
118
|
+
* @throws Error if private key is not 32-byte hex
|
|
119
|
+
*/ export async function createBn254Keystore(password, privateKeyHex, pubkeyHex, derivationPath) {
|
|
120
|
+
const salt = randomBytes(32);
|
|
121
|
+
const iv = randomBytes(16);
|
|
122
|
+
const dk = await pbkdf2Async(Buffer.from(password.normalize('NFKD'), 'utf8'), salt, 262144, 32, 'sha256');
|
|
123
|
+
return createBn254KeystoreFromDerivedKey(privateKeyHex, pubkeyHex, derivationPath, salt, iv, dk);
|
|
124
|
+
}
|
|
120
125
|
/**
|
|
121
126
|
* Loads and validates a BN254 keystore file.
|
|
122
127
|
*
|
|
@@ -199,20 +204,3 @@ import { z } from 'zod';
|
|
|
199
204
|
throw new Bn254KeystoreError(`Failed to decrypt keystore: ${String(error)}`, error);
|
|
200
205
|
}
|
|
201
206
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Validates that a decrypted private key matches the public key in the keystore.
|
|
204
|
-
*
|
|
205
|
-
* @param privateKeyHex - Decrypted private key (0x-prefixed)
|
|
206
|
-
* @param expectedPubkey - Expected public key from keystore
|
|
207
|
-
* @param computePublicKey - Function to compute public key from private key
|
|
208
|
-
* @returns true if keys match, false otherwise
|
|
209
|
-
*/ export function verifyBn254Keypair(privateKeyHex, expectedPubkey, computePublicKey) {
|
|
210
|
-
try {
|
|
211
|
-
const computedPubkey = computePublicKey(privateKeyHex);
|
|
212
|
-
const normalizedExpected = expectedPubkey.toLowerCase().replace(/^0x/i, '');
|
|
213
|
-
const normalizedComputed = computedPubkey.toLowerCase().replace(/^0x/i, '');
|
|
214
|
-
return normalizedExpected === normalizedComputed;
|
|
215
|
-
} catch {
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
}
|
package/dest/crypto/bls/index.js
CHANGED
|
@@ -1,55 +1,39 @@
|
|
|
1
|
-
import { Fq, Fr } from '../../fields/fields.js';
|
|
2
1
|
/**
|
|
3
|
-
* BN254
|
|
4
|
-
*
|
|
2
|
+
* BN254 utility functions for point operations.
|
|
3
|
+
* Provides compression, decompression, and public key generation for the BN254 curve.
|
|
4
|
+
* Uses the bb.js Barretenberg backend for point operations.
|
|
5
5
|
*/
|
|
6
|
-
export declare class Bn254G1Point {
|
|
7
|
-
readonly x: Fq;
|
|
8
|
-
readonly y: Fq;
|
|
9
|
-
constructor(x: Fq, y: Fq);
|
|
10
|
-
private toBbApiPoint;
|
|
11
|
-
private static fromBbApiPoint;
|
|
12
|
-
isOnCurve(): Promise<boolean>;
|
|
13
|
-
/**
|
|
14
|
-
* Get the generator point for BN254 G1, or perform scalar multiplication.
|
|
15
|
-
* When called without arguments, returns the base generator point.
|
|
16
|
-
* When called with a scalar, returns scalar * generator (useful for public key derivation).
|
|
17
|
-
*/
|
|
18
|
-
static generator(scalar?: Fr): Promise<Bn254G1Point>;
|
|
19
|
-
/**
|
|
20
|
-
* Decompress a BN254 G1 point from compressed form (32 bytes).
|
|
21
|
-
* The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
|
|
22
|
-
* in the most significant bit.
|
|
23
|
-
*/
|
|
24
|
-
static fromCompressed(compressed: Buffer): Promise<Bn254G1Point>;
|
|
25
|
-
/**
|
|
26
|
-
* Compress this BN254 G1 point to 32 bytes.
|
|
27
|
-
* The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
|
|
28
|
-
* in the most significant bit (bit 255).
|
|
29
|
-
*/
|
|
30
|
-
compress(): Buffer;
|
|
31
|
-
equals(other: Bn254G1Point): boolean;
|
|
32
|
-
toString(): string;
|
|
33
|
-
}
|
|
34
6
|
/**
|
|
35
|
-
* BN254
|
|
36
|
-
*
|
|
37
|
-
*
|
|
7
|
+
* Generate a compressed BN254 G1 public key from a private key.
|
|
8
|
+
*
|
|
9
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
10
|
+
* @returns Compressed G1 point (32 bytes with sign bit in MSB)
|
|
38
11
|
*/
|
|
39
|
-
export declare
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
12
|
+
export declare function computeBn254G1PublicKeyCompressed(privateKeyHex: string): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Generate uncompressed BN254 G1 public key from a private key.
|
|
15
|
+
*
|
|
16
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
17
|
+
* @returns G1 point in affine coordinates
|
|
18
|
+
*/
|
|
19
|
+
export declare function computeBn254G1PublicKey(privateKeyHex: string): Promise<{
|
|
20
|
+
x: bigint;
|
|
21
|
+
y: bigint;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Generate BN254 G2 public key from a private key.
|
|
25
|
+
*
|
|
26
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
27
|
+
* @returns G2 point in affine coordinates
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeBn254G2PublicKey(privateKeyHex: string): Promise<{
|
|
30
|
+
x: {
|
|
31
|
+
c0: bigint;
|
|
32
|
+
c1: bigint;
|
|
33
|
+
};
|
|
34
|
+
y: {
|
|
35
|
+
c0: bigint;
|
|
36
|
+
c1: bigint;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnlwdG8vYm4yNTQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7R0FJRztBQUVIOzs7OztHQUtHO0FBQ0gsd0JBQXNCLGlDQUFpQyxDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVU5RjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLENBQUMsRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDLENBUXRHO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsdUJBQXVCLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDNUUsQ0FBQyxFQUFFO1FBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztRQUFDLEVBQUUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDO0lBQzlCLENBQUMsRUFBRTtRQUFFLEVBQUUsRUFBRSxNQUFNLENBQUM7UUFBQyxFQUFFLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQztDQUMvQixDQUFDLENBV0QifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/bn254/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/bn254/index.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAsB,iCAAiC,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU9F;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQtG;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5E,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B,CAAC,CAWD"}
|
|
@@ -1,145 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Fr } from '../../curves/bn254/field.js';
|
|
2
|
+
import { Bn254G1Point, Bn254G2Point } from '../../curves/bn254/point.js';
|
|
3
3
|
/**
|
|
4
|
-
* BN254
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*/ static async generator(scalar) {
|
|
36
|
-
if (!scalar) {
|
|
37
|
-
return new Bn254G1Point(Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.x)), Fq.fromBuffer(Buffer.from(BN254_G1_GENERATOR.y)));
|
|
38
|
-
}
|
|
39
|
-
await BarretenbergSync.initSingleton();
|
|
40
|
-
const api = BarretenbergSync.getSingleton();
|
|
41
|
-
const response = api.bn254G1Mul({
|
|
42
|
-
point: BN254_G1_GENERATOR,
|
|
43
|
-
scalar: scalar.toBuffer()
|
|
44
|
-
});
|
|
45
|
-
return Bn254G1Point.fromBbApiPoint(response.point);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Decompress a BN254 G1 point from compressed form (32 bytes).
|
|
49
|
-
* The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
|
|
50
|
-
* in the most significant bit.
|
|
51
|
-
*/ static async fromCompressed(compressed) {
|
|
52
|
-
if (compressed.length !== 32) {
|
|
53
|
-
throw new Error('Invalid compressed point length');
|
|
54
|
-
}
|
|
55
|
-
await BarretenbergSync.initSingleton();
|
|
56
|
-
const api = BarretenbergSync.getSingleton();
|
|
57
|
-
const response = api.bn254G1FromCompressed({
|
|
58
|
-
compressed: new Uint8Array(compressed)
|
|
59
|
-
});
|
|
60
|
-
return Bn254G1Point.fromBbApiPoint(response.point);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Compress this BN254 G1 point to 32 bytes.
|
|
64
|
-
* The compressed format encodes the x-coordinate and the sign bit of the y-coordinate
|
|
65
|
-
* in the most significant bit (bit 255).
|
|
66
|
-
*/ compress() {
|
|
67
|
-
const xBytes = this.x.toBuffer();
|
|
68
|
-
// Get the least significant bit of y to determine the sign
|
|
69
|
-
const yLsb = this.y.toBigInt() & 1n;
|
|
70
|
-
// If y is odd, set the most significant bit (bit 255) of the output
|
|
71
|
-
if (yLsb === 1n) {
|
|
72
|
-
xBytes[0] |= 0x80;
|
|
73
|
-
}
|
|
74
|
-
return xBytes;
|
|
75
|
-
}
|
|
76
|
-
equals(other) {
|
|
77
|
-
return this.x.equals(other.x) && this.y.equals(other.y);
|
|
78
|
-
}
|
|
79
|
-
toString() {
|
|
80
|
-
return `Bn254G1Point(x: ${this.x.toString()}, y: ${this.y.toString()})`;
|
|
81
|
-
}
|
|
4
|
+
* BN254 utility functions for point operations.
|
|
5
|
+
* Provides compression, decompression, and public key generation for the BN254 curve.
|
|
6
|
+
* Uses the bb.js Barretenberg backend for point operations.
|
|
7
|
+
*/ /**
|
|
8
|
+
* Generate a compressed BN254 G1 public key from a private key.
|
|
9
|
+
*
|
|
10
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
11
|
+
* @returns Compressed G1 point (32 bytes with sign bit in MSB)
|
|
12
|
+
*/ export async function computeBn254G1PublicKeyCompressed(privateKeyHex) {
|
|
13
|
+
const sk = BigInt(privateKeyHex);
|
|
14
|
+
const skReduced = sk % Fr.MODULUS;
|
|
15
|
+
// Generate G1 point on BN254 curve using bb.js
|
|
16
|
+
const scalar = Fr.fromString(skReduced.toString());
|
|
17
|
+
const pk1 = await Bn254G1Point.generator(scalar);
|
|
18
|
+
// Compress the point using the primitive method
|
|
19
|
+
return '0x' + pk1.compress().toString('hex');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generate uncompressed BN254 G1 public key from a private key.
|
|
23
|
+
*
|
|
24
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
25
|
+
* @returns G1 point in affine coordinates
|
|
26
|
+
*/ export async function computeBn254G1PublicKey(privateKeyHex) {
|
|
27
|
+
const sk = BigInt(privateKeyHex);
|
|
28
|
+
const skReduced = sk % Fr.MODULUS;
|
|
29
|
+
const scalar = Fr.fromString(skReduced.toString());
|
|
30
|
+
const pk1 = await Bn254G1Point.generator(scalar);
|
|
31
|
+
return {
|
|
32
|
+
x: pk1.x.toBigInt(),
|
|
33
|
+
y: pk1.y.toBigInt()
|
|
34
|
+
};
|
|
82
35
|
}
|
|
83
36
|
/**
|
|
84
|
-
* BN254 G2
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
],
|
|
100
|
-
|
|
101
|
-
this.y[0].toBuffer(),
|
|
102
|
-
this.y[1].toBuffer()
|
|
103
|
-
]
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
static fromBbApiPoint(point) {
|
|
107
|
-
return new Bn254G2Point([
|
|
108
|
-
Fq.fromBuffer(Buffer.from(point.x[0])),
|
|
109
|
-
Fq.fromBuffer(Buffer.from(point.x[1]))
|
|
110
|
-
], [
|
|
111
|
-
Fq.fromBuffer(Buffer.from(point.y[0])),
|
|
112
|
-
Fq.fromBuffer(Buffer.from(point.y[1]))
|
|
113
|
-
]);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Get the generator point for BN254 G2, or perform scalar multiplication.
|
|
117
|
-
* When called without arguments, returns the base generator point.
|
|
118
|
-
* When called with a scalar, returns scalar * generator.
|
|
119
|
-
*/ static async generator(scalar) {
|
|
120
|
-
if (!scalar) {
|
|
121
|
-
return new Bn254G2Point([
|
|
122
|
-
Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[0])),
|
|
123
|
-
Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.x[1]))
|
|
124
|
-
], [
|
|
125
|
-
Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[0])),
|
|
126
|
-
Fq.fromBuffer(Buffer.from(BN254_G2_GENERATOR.y[1]))
|
|
127
|
-
]);
|
|
37
|
+
* Generate BN254 G2 public key from a private key.
|
|
38
|
+
*
|
|
39
|
+
* @param privateKeyHex - Private key as 0x-prefixed hex string
|
|
40
|
+
* @returns G2 point in affine coordinates
|
|
41
|
+
*/ export async function computeBn254G2PublicKey(privateKeyHex) {
|
|
42
|
+
const sk = BigInt(privateKeyHex);
|
|
43
|
+
const skReduced = sk % Fr.MODULUS;
|
|
44
|
+
const scalar = Fr.fromString(skReduced.toString());
|
|
45
|
+
const pk2 = await Bn254G2Point.generator(scalar);
|
|
46
|
+
return {
|
|
47
|
+
x: {
|
|
48
|
+
c0: pk2.x[0].toBigInt(),
|
|
49
|
+
c1: pk2.x[1].toBigInt()
|
|
50
|
+
},
|
|
51
|
+
y: {
|
|
52
|
+
c0: pk2.y[0].toBigInt(),
|
|
53
|
+
c1: pk2.y[1].toBigInt()
|
|
128
54
|
}
|
|
129
|
-
|
|
130
|
-
const api = BarretenbergSync.getSingleton();
|
|
131
|
-
const response = api.bn254G2Mul({
|
|
132
|
-
point: BN254_G2_GENERATOR,
|
|
133
|
-
scalar: scalar.toBuffer()
|
|
134
|
-
});
|
|
135
|
-
return Bn254G2Point.fromBbApiPoint(response.point);
|
|
136
|
-
}
|
|
137
|
-
equals(other) {
|
|
138
|
-
return this.x[0].equals(other.x[0]) && this.x[1].equals(other.x[1]) && this.y[0].equals(other.y[0]) && this.y[1].equals(other.y[1]);
|
|
139
|
-
}
|
|
140
|
-
toString() {
|
|
141
|
-
return `Bn254G2Point(x: (${this.x[0].toString()}, ${this.x[1].toString()}), y: (${this.y[0].toString()}, ${this.y[1].toString()}))`;
|
|
142
|
-
}
|
|
55
|
+
};
|
|
143
56
|
}
|
|
144
|
-
// Re-export BN254 point utility functions
|
|
145
|
-
export { computeBn254G1PublicKeyCompressed, computeBn254G1PublicKey, computeBn254G2PublicKey } from './bn254_utils.js';
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { Signature } from '../signature/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* ECDSA signature used for transactions.
|
|
5
5
|
* @see cpp/barretenberg/cpp/src/barretenberg/crypto/ecdsa/ecdsa.hpp
|
|
6
6
|
*/
|
|
7
7
|
export declare class EcdsaSignature implements Signature {
|
|
8
|
+
/**
|
|
9
|
+
* The r byte-array (32 bytes) in an ECDSA signature.
|
|
10
|
+
*/
|
|
8
11
|
r: Buffer;
|
|
12
|
+
/**
|
|
13
|
+
* The s byte-array (32 bytes) in an ECDSA signature.
|
|
14
|
+
*/
|
|
9
15
|
s: Buffer;
|
|
16
|
+
/**
|
|
17
|
+
* The recovery id (1 byte) in an ECDSA signature.
|
|
18
|
+
*/
|
|
10
19
|
v: Buffer;
|
|
11
20
|
constructor(
|
|
12
21
|
/**
|
|
@@ -57,4 +66,4 @@ export declare class EcdsaSignature implements Signature {
|
|
|
57
66
|
*/
|
|
58
67
|
toFields(includeV?: boolean): Fr[];
|
|
59
68
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3J5cHRvL2VjZHNhL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLFNBQVM7SUFFNUM7O09BRUc7SUFDSSxDQUFDLEVBQUUsTUFBTTtJQUNoQjs7T0FFRztJQUNJLENBQUMsRUFBRSxNQUFNO0lBQ2hCOztPQUVHO0lBQ0ksQ0FBQyxFQUFFLE1BQU07SUFabEI7SUFDRTs7T0FFRztJQUNJLENBQUMsRUFBRSxNQUFNO0lBQ2hCOztPQUVHO0lBQ0ksQ0FBQyxFQUFFLE1BQU07SUFDaEI7O09BRUc7SUFDSSxDQUFDLEVBQUUsTUFBTSxFQVdqQjtJQUVEOzs7T0FHRztJQUNILFFBQVEsd0JBRVA7SUFFRDs7OztPQUlHO0lBQ0gsT0FBYyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sa0JBRXRDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBYyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUV4RDtJQUVEOzs7T0FHRztJQUNILE9BQWMsTUFBTSxtQkFFbkI7SUFFRDs7O09BR0c7SUFDSCxRQUFRLFdBRVA7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFFBQVEsVUFBUSxHQUFHLEVBQUUsRUFBRSxDQVkvQjtDQUNGIn0=
|