From 3550895ff31a52a64a25a931f7460077c136850d Mon Sep 17 00:00:00 2001 From: endomorphosis Date: Sun, 7 Apr 2024 15:39:25 -0700 Subject: [PATCH] Update dependencies and configuration files --- README.md | 87 +- example.py | 21 + huggingface_scraper/generate_manifest.js | 106 +- huggingface_scraper/generator.js | 22 +- huggingface_scraper/ipfs.js | 22 +- huggingface_scraper/ipfs_kit_lib/cluster.lock | 0 huggingface_scraper/ipfs_kit_lib/config | 147 + .../ipfs_kit_lib/datastore_spec | 1 + .../ipfs_kit_lib/identity.json | 4 + .../ipfs_kit_lib/install_ipfs.js | 836 +++ huggingface_scraper/ipfs_kit_lib/ipfs.js | 680 ++ .../ipfs_kit_lib/ipfs_cluster_ctl.js | 257 + .../ipfs_kit_lib/ipfs_cluster_follow.js | 190 + .../ipfs_kit_lib/ipfs_cluster_service.js | 52 + huggingface_scraper/ipfs_kit_lib/ipget.js | 94 + huggingface_scraper/ipfs_kit_lib/peerstore | 28 + huggingface_scraper/ipfs_kit_lib/service.json | 261 + .../ipfs_kit_lib/service_follower.json | 261 + huggingface_scraper/ipfs_kit_lib/text_fio.js | 140 + huggingface_scraper/main.js | 63 +- huggingface_scraper/manifest.js | 52 +- huggingface_scraper/manifests/manifest_api.js | 24 +- .../manifests/manifest_diffusion.js | 23 +- .../manifests/manifest_hf_embed.js | 52 +- .../manifests/manifest_hf_faster_whisper.js | 25 +- .../manifests/manifest_hf_lm.js | 28 +- .../manifests/manifest_hf_t5.js | 26 +- .../manifests/manifest_hf_transformers.js | 26 +- huggingface_scraper/manifests/manifest_knn.js | 24 +- .../manifests/manifest_llama_cpp.js | 25 +- huggingface_scraper/model_manager.js | 1488 ++++ .../modeldata/generate_diffusion.json | 1 + .../orbitdb_kit_lib/import-collection.js | 29 + .../orbitdb_kit_lib/import_hf_dataset.js | 1 + .../orbitdb_kit_lib/orbitv3-master.js | 184 + .../orbitdb_kit_lib/package.json | 36 + .../orbitdb_kit_lib/websocket_test_master.js | 19 + huggingface_scraper/orbitdb_kit_lib/yarn.lock | 6371 +++++++++++++++++ huggingface_scraper/process_manifest.js | 273 +- huggingface_scraper/process_manifest_test.js | 8 +- huggingface_scraper/s3_kit/s3_kit.js | 792 ++ huggingface_scraper/utils.js | 83 +- ipfs_transformers/__init__.py | 1758 +++++ ipfs_transformers/ipfs_kit.py | 11 +- ipfs_transformers/ipfs_kit_lib/__init__.py | 1 + ipfs_transformers/ipfs_kit_lib/identity.json | 2 +- .../ipfs_kit_lib/install_ipfs.py | 272 +- .../ipfs_kit_lib/ipfs_cluster_follow.py | 18 +- .../ipfs_kit_lib/ipfs_cluster_service.py | 35 +- ipfs_transformers/ipfs_kit_lib/ipget.py | 18 +- ipfs_transformers/ipfs_transformers.py | 4 +- .../ipfs_transformers_generator.py | 20 +- .../ipfs_transformers_template.py | 199 +- ipfs_transformers/model_manager.py | 116 +- ipfs_transformers/orbit_kit.py | 1 + .../orbit_kit_lib/orbitv3-slave.js | 227 + ipfs_transformers/orbit_kit_lib/package.json | 36 + .../orbit_kit_lib/websocket_test_slave.js | 19 + ipfs_transformers/orbit_kit_lib/yarn.lock | 6371 +++++++++++++++++ ipfs_transformers/s3_kit.py | 88 - ipfs_transformers/test/test_hf_ipfs.py | 6 +- orbitdb_kit/import-collection.js | 29 + orbitdb_kit/import_hf_dataset.js | 1 + orbitdb_kit/orbitv3-master.js | 184 + orbitdb_kit/orbitv3-slave.js | 227 + orbitdb_kit/package.json | 36 + orbitdb_kit/websocket_test_master.js | 19 + orbitdb_kit/websocket_test_slave.js | 19 + orbitdb_kit/yarn.lock | 6371 +++++++++++++++++ package.json | 5 + scraper.js | 45 +- 71 files changed, 28435 insertions(+), 565 deletions(-) create mode 100644 example.py create mode 100755 huggingface_scraper/ipfs_kit_lib/cluster.lock create mode 100755 huggingface_scraper/ipfs_kit_lib/config create mode 100644 huggingface_scraper/ipfs_kit_lib/datastore_spec create mode 100755 huggingface_scraper/ipfs_kit_lib/identity.json create mode 100644 huggingface_scraper/ipfs_kit_lib/install_ipfs.js create mode 100644 huggingface_scraper/ipfs_kit_lib/ipfs.js create mode 100644 huggingface_scraper/ipfs_kit_lib/ipfs_cluster_ctl.js create mode 100644 huggingface_scraper/ipfs_kit_lib/ipfs_cluster_follow.js create mode 100644 huggingface_scraper/ipfs_kit_lib/ipfs_cluster_service.js create mode 100644 huggingface_scraper/ipfs_kit_lib/ipget.js create mode 100755 huggingface_scraper/ipfs_kit_lib/peerstore create mode 100755 huggingface_scraper/ipfs_kit_lib/service.json create mode 100644 huggingface_scraper/ipfs_kit_lib/service_follower.json create mode 100644 huggingface_scraper/ipfs_kit_lib/text_fio.js create mode 100644 huggingface_scraper/model_manager.js create mode 100644 huggingface_scraper/modeldata/generate_diffusion.json create mode 100644 huggingface_scraper/orbitdb_kit_lib/import-collection.js create mode 100644 huggingface_scraper/orbitdb_kit_lib/import_hf_dataset.js create mode 100644 huggingface_scraper/orbitdb_kit_lib/orbitv3-master.js create mode 100644 huggingface_scraper/orbitdb_kit_lib/package.json create mode 100644 huggingface_scraper/orbitdb_kit_lib/websocket_test_master.js create mode 100644 huggingface_scraper/orbitdb_kit_lib/yarn.lock create mode 100644 huggingface_scraper/s3_kit/s3_kit.js create mode 100644 ipfs_transformers/__init__.py create mode 100644 ipfs_transformers/ipfs_kit_lib/__init__.py create mode 100644 ipfs_transformers/orbit_kit.py create mode 100644 ipfs_transformers/orbit_kit_lib/orbitv3-slave.js create mode 100644 ipfs_transformers/orbit_kit_lib/package.json create mode 100644 ipfs_transformers/orbit_kit_lib/websocket_test_slave.js create mode 100644 ipfs_transformers/orbit_kit_lib/yarn.lock create mode 100644 orbitdb_kit/import-collection.js create mode 100644 orbitdb_kit/import_hf_dataset.js create mode 100644 orbitdb_kit/orbitv3-master.js create mode 100644 orbitdb_kit/orbitv3-slave.js create mode 100644 orbitdb_kit/package.json create mode 100644 orbitdb_kit/websocket_test_master.js create mode 100644 orbitdb_kit/websocket_test_slave.js create mode 100644 orbitdb_kit/yarn.lock diff --git a/README.md b/README.md index 366d840..52b8d22 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,91 @@ # Data Economy Hackathon IPFS Huggingface Bridge -Author - Benjamin Barber @endomorphosis +for transformers.js visit: +https://github.com/endomorphosis/ipfs_transformers_js -QA / website - Kevin De Haan @coregod360 +for huggingface datasets python library visit +https://github.com/endomorphosis/ipfs_datasets -CLEANUP / Windows compatibility / Breakfix 03/31/2024 - 04/07/2024 +for orbitdbkit nodejs library visit +https://github.com/endomorphosis/orbitdb-benchmark/ + +Author - Benjamin Barber +QA - Kevin De Haan # About This is a model manager and wrapper for huggingface, looks up a index of models from an collection of models, and will download a model from either https/s3/ipfs, depending on which source is the fastest. # How to use +~~~shell +pip install . +~~~ -to install - -python3 setup.py - -In your python script +look run ``python3 example.py`` for examples of usage. -from transformers import AutoModelForSeq2SeqLM +this is designed to be a drop in replacement, which requires only 2 lines to be changed -from ipfs_transformers import AutoModelForSeq2SeqLM - -model = AutoModelForSeq2SeqLM.from_auto_download("google/t5_11b_trueteacher_and_anli") +In your python script +~~~shell +from transformers import AutoModel +from ipfs_transformers import AutoModel +model = AutoModel.from_auto_download("bge-small-en-v1.5") +~~~ or -from transformers import AutoModelForSeq2SeqLM +~~~shell +from transformers import AutoModel +from ipfs_transformers import AutoModel +model = AutoModel.from_ipfs("QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1") +~~~ + +or to use with with s3 caching +~~~shell +from transformers import AutoModel +from ipfs_transformers import AutoModel +model = T5Model.from_auto_download( + model_name="google-bert/t5_11b_trueteacher_and_anli", + s3cfg={ + "bucket": "cloud", + "endpoint": "https://storage.googleapis.com", + "secret_key": "", + "access_key": "" + } +) +~~~ + +# To scrape huggingface + +with interactive prompt: + +~~~shell +node scraper.js [source] [model name] +~~~ + +~~~shell +node scraper.js +~~~ -from ipfs_transformers import AutoModelForSeq2SeqLM +import a model already defined: -model = AutoModelForSeq2SeqLM.from_ipfs("QmWJr4M1VN5KpJjqCsJsJg7PDmFoqQYs1BKpYxcdMY1qkh") +~~~shell +node scraper.js hf "modelname" (as defined in your .json files) +~~~ -To scrape huggingface +import all models previously defined: -interactive prompt: +~~~shell +node scraper.js hf +~~~ -node scraper.js +## TODO integrate orbitDB -import a model: +## TODO finish translating model manager to node.js and replace existing ipfs-cluster wrapper -node scraper.js hf "modelname" (as defined in your .json files) +## TODO finish finish translating model manager to browser js and replace existing ipfs-cluster wrapper -import all models +## TODO integrate transformers.js (browser implementation) -node scraper.js hf \ No newline at end of file +## TODO integrate bacalhau dockerfile \ No newline at end of file diff --git a/example.py b/example.py new file mode 100644 index 0000000..5422a94 --- /dev/null +++ b/example.py @@ -0,0 +1,21 @@ +from transformers import AutoModel +from ipfs_transformers import AutoModel + +model = AutoModel.from_auto_download("bge-small-en-v1.5") +print(dir(model)) +model = AutoModel.from_ipfs("QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1") +print(dir(model)) + + +## OPTIONAL S3 Caching ## + +#model = T5Model.from_auto_download( +# model_name="google-bert/t5_11b_trueteacher_and_anli", +# s3cfg={ +# "bucket": "cloud", +# "endpoint": "https://storage.googleapis.com", +# "secret_key": "", +# "access_key": "", +# } +#) +#print(dir(model)) diff --git a/huggingface_scraper/generate_manifest.js b/huggingface_scraper/generate_manifest.js index 52e9832..4f96fba 100644 --- a/huggingface_scraper/generate_manifest.js +++ b/huggingface_scraper/generate_manifest.js @@ -3,13 +3,21 @@ import path, { parse } from 'path' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' import hf_embed_calc from './manifests/manifest_hf_embed.js' +import hf_embed_add from './manifests/manifest_hf_embed.js' import llama_cpp_calc from './manifests/manifest_llama_cpp.js' +import llama_cpp_add from './manifests/manifest_llama_cpp.js' import hf_lm_calc from './manifests/manifest_hf_lm.js' +import hf_lm_add from './manifests/manifest_hf_lm.js' import hf_t5_calc from './manifests/manifest_hf_t5.js' +import hf_t5_add from './manifests/manifest_hf_t5.js' import knn_calc from './manifests/manifest_knn.js' +import knn_add from './manifests/manifest_knn.js' import api_calc from './manifests/manifest_api.js' +import api_add from './manifests/manifest_api.js' import hf_faster_whisper_calc from './manifests/manifest_hf_faster_whisper.js' +import hf_faster_whisper_add from './manifests/manifest_hf_faster_whisper.js' import hf_transformers_calc from './manifests/manifest_hf_transformers.js' +import hf_transformers_add from './manifests/manifest_hf_transformers.js' import diffusion_calc from './manifests/manifest_diffusion.js' import {complete, parse_templates, generate_test} from './utils.js' @@ -19,18 +27,72 @@ export class Generate_Manifest{ this.hwRequirements = {} } + + generate_from_prompt(generate){ + let generation = this.generate(generate) + let test_generation = false + if (test_generation){ + let add_generation = this.add_generator_to_model_data(this, generation) + } + return generation + } + main(generate){ - let self = this - let generation = self.generate(generate) + let generation = this.generate(generate) + let test_generation = false + if (test_generation){ + let add_generation = this.add_generator_to_model_data(this, generation) + } return generation } + add_generator_to_model_data(generation){ + if (generation.skill == undefined){ + throw("skill is undefined") + } + else if (generation.skill == 'hf_transformers'){ + results = hf_transformers_add(this) + } + else if (generation.skill == 'hf_embed'){ + results = hf_embed_add(this) + } + else if (generation.skill == 'llama_cpp'){ + results = llama_cpp_add(this) + } + else if (generation.skill == 'diffusion'){ + results = diffusion_add(this) + } + else if (generation.skill == 'knn'){ + results = knn_add(this) + } + else if (generation.skill == 'api'){ + results = api_add(this) + } + else if (generation.skill == 'custom'){ + results = custom_add(this) + } + else if (generation.skill == 'hf_faster_whisper'){ + results = hf_faster_whisper_add(this) + } + else if (generation.skill == 'hf_lm'){ + results = hf_lm_add(this) + } + else if (generation.skill == 'hf_t5'){ + results = hf_t5_add(this) + } + else{ + throw("skill is not defined") + } + + + return results + } + generate(generate){ - let self = {} - let metadata = self.metadata - let hwRequirements = self.hwRequirements + let metadata = this.metadata + let hwRequirements = this.hwRequirements let results - let model_types = ['hf_transformers', 'hf_embed', 'llama_cpp', 'diffusion', 'knn', 'api', 'whisper', 'custom'] + let model_types = ['hf_transformers', 'hf_embed', 'llama_cpp', 'diffusion', 'knn', 'api', 'whisper', 'hf_lm', 'hf_t5'] // prompt the user for input console.log("1. hf_transformers") console.log("2. hf_embed") @@ -39,7 +101,8 @@ export class Generate_Manifest{ console.log("5. knn") console.log("6. api") console.log("7. whisper") - console.log("8. custom") + console.log("8. hf_lm") + console.log("9. hf_t5") // request console input let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -60,55 +123,54 @@ export class Generate_Manifest{ } } - self.skill = model_type + this.skill = model_type if (model_type == 'hf_transformers'){ - results = hf_transformers_calc(self) + results = hf_transformers_calc(this) } if (model_type == 'hf_faster_whisper'){ - results = hf_faster_whisper_calc(self) + results = hf_faster_whisper_calc(this) } if (model_type == 'hf_lm'){ - results = hf_lm_calc(self) + results = hf_lm_calc(this) } if (model_type == "hf_t5"){ - results = hf_t5_calc(self) + results = hf_t5_calc(this) } if (model_type == 'hf_embed'){ - results = hf_embed_calc(self) + results = hf_embed_calc(this) } if (model_type == 'llama_cpp'){ - results = llama_cpp_calc(self) + results = llama_cpp_calc(this) } if (model_type == 'diffusion'){ - results = diffusion_calc(self) + results = diffusion_calc(this) } if (model_type == 'knn'){ - results = knn_calc(self) + results = knn_calc(this) } if (model_type == 'api'){ - results = api_calc(self) + results = api_calc(this) } if (model_type == 'custom'){ - results = custom_calc(self) + results = custom_calc(this) } try{ - test = generate_test(results) + let test = generate_test(results) } catch(err){ console.log(err) - throw("Error in testing the manifest " + model_type) - +// throw("Error in testing the manifest " + model_type) } finally{ return results @@ -116,7 +178,7 @@ export class Generate_Manifest{ } - custom_calc(self){ + custom_calc(){ throw("custom is not yet supported") } diff --git a/huggingface_scraper/generator.js b/huggingface_scraper/generator.js index 56efbdc..503c768 100644 --- a/huggingface_scraper/generator.js +++ b/huggingface_scraper/generator.js @@ -7,7 +7,7 @@ import generate_hf_embed from './modeldata/generate_hf_embed.json' assert { type import generate_hf_faster_whisper from './modeldata/generate_hf_faster_whisper.json' assert { type: 'json' }; import generate_hf_lm from './modeldata/generate_hf_lm.json' assert { type: 'json' }; import generate_hf_t5 from './modeldata/generate_hf_t5.json' assert { type: 'json' }; -import generate_hf_diffusion from './modeldata/generate_hf_diffusion.json' assert { type: 'json' }; +import generate_hf_diffusion from './modeldata/generate_diffusion.json' assert { type: 'json' }; import generate_api from './modeldata/generate_api.json' assert { type: 'json' }; import generate_knn from './modeldata/generate_knn.json' assert { type: 'json' }; @@ -249,15 +249,15 @@ export class Generator{ main(){ this - this.llama_cpp = template_llama_cpp(self.local_model_path, self.collection_path) - this.hf_transformers = template_hf_transformers(self.local_model_path, self.collection_path) - this.hf_embed = template_hf_embed(self.local_model_path, self.collection_path) - this.hf_faster_whisper = template_hf_faster_whisper(self.local_model_path, self.collection_path) - this.hf_lm = template_hf_lm(self.local_model_path, self.collection_path) - this.hf_t5 = template_hf_t5(self.local_model_path, self.collection_path) - this.hf_diffusion = template_hf_diffusion(self.local_model_path, self.collection_path) - this.api = template_api(self.local_model_path, self.collection_path) - this.knn = template_knn(self.local_model_path, self.collection_path) - return self + this.llama_cpp = template_llama_cpp(this.local_model_path, this.collection_path) + this.hf_transformers = template_hf_transformers(this.local_model_path, this.collection_path) + this.hf_embed = template_hf_embed(this.local_model_path, this.collection_path) + this.hf_faster_whisper = template_hf_faster_whisper(this.local_model_path, this.collection_path) + this.hf_lm = template_hf_lm(this.local_model_path, this.collection_path) + this.hf_t5 = template_hf_t5(this.local_model_path, this.collection_path) + this.hf_diffusion = template_hf_diffusion(this.local_model_path, this.collection_path) + this.api = template_api(this.local_model_path, this.collection_path) + this.knn = template_knn(this.local_model_path, this.collection_path) + return this } } \ No newline at end of file diff --git a/huggingface_scraper/ipfs.js b/huggingface_scraper/ipfs.js index 34ab6e9..7b587ca 100644 --- a/huggingface_scraper/ipfs.js +++ b/huggingface_scraper/ipfs.js @@ -10,26 +10,15 @@ export class ipfsClusterCtl { this.queue = [] } - __init__(self){ - self = {} - self.stats = {} - self.queue = [] - self.exec = {} - return self - } - main(){ - let self = this - self = self.__init__() - return self + return this } check_collection(collection){ - let self = this let status = {} let collection_keys = Object.keys(collection) - let pinset_keys = Object.keys(self.pinset) + let pinset_keys = Object.keys(this.pinset) let orphan_models = [] let orphan_pins = [] let active_pins = [] @@ -83,7 +72,6 @@ export class ipfsClusterCtl { } execute(args){ - let self = this let command let executable = "ipfs-cluster-ctl " @@ -114,7 +102,7 @@ export class ipfsClusterCtl { } if (options.includes(args.command)){ - self.exec = command + this.exec = command child_process.execSync(command, (error, stdout, stderr) => { if (error) { console.log(`error: ${error.message}`); @@ -127,11 +115,11 @@ export class ipfsClusterCtl { console.log(`stdout: ${stdout}`); } ) - return self + return this } else{ console.log("command not found") - return self + return this } } diff --git a/huggingface_scraper/ipfs_kit_lib/cluster.lock b/huggingface_scraper/ipfs_kit_lib/cluster.lock new file mode 100755 index 0000000..e69de29 diff --git a/huggingface_scraper/ipfs_kit_lib/config b/huggingface_scraper/ipfs_kit_lib/config new file mode 100755 index 0000000..ef35452 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/config @@ -0,0 +1,147 @@ +{ + "API": { + "HTTPHeaders": {} + }, + "Addresses": { + "API": "/ip4/127.0.0.1/tcp/5001", + "Announce": [], + "AppendAnnounce": [], + "Gateway": "/ip4/127.0.0.1/tcp/8080", + "NoAnnounce": [], + "Swarm": [ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001", + "/ip4/0.0.0.0/udp/4001/quic-v1", + "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport", + "/ip6/::/udp/4001/quic-v1", + "/ip6/::/udp/4001/quic-v1/webtransport" + ] + }, + "AutoNAT": {}, + "Bootstrap": [ + "/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", + "/ip4/104.131.131.82/udp/4001/quic-v1/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", + "/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN", + "/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa", + "/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb", + "/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt" + ], + "DNS": { + "Resolvers": {} + }, + "Datastore": { + "BloomFilterSize": 0, + "GCPeriod": "1h", + "HashOnRead": false, + "Spec": { + "mounts": [ + { + "child": { + "path": "blocks", + "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2", + "sync": true, + "type": "flatfs" + }, + "mountpoint": "/blocks", + "prefix": "flatfs.datastore", + "type": "measure" + }, + { + "child": { + "compression": "none", + "path": "datastore", + "type": "levelds" + }, + "mountpoint": "/", + "prefix": "leveldb.datastore", + "type": "measure" + } + ], + "type": "mount" + }, + "StorageGCWatermark": 90, + "StorageMax": "10GB" + }, + "Discovery": { + "MDNS": { + "Enabled": true + } + }, + "Experimental": { + "FilestoreEnabled": false, + "GraphsyncEnabled": false, + "Libp2pStreamMounting": false, + "OptimisticProvide": false, + "OptimisticProvideJobsPoolSize": 0, + "P2pHttpProxy": false, + "StrategicProviding": false, + "UrlstoreEnabled": false + }, + "Gateway": { + "APICommands": [], + "DeserializedResponses": null, + "DisableHTMLErrors": null, + "ExposeRoutingAPI": null, + "HTTPHeaders": {}, + "NoDNSLink": false, + "NoFetch": false, + "PathPrefixes": [], + "PublicGateways": null, + "RootRedirect": "" + }, + "Identity": { + "PeerID": "12D3KooWMMVhBAXPGt5QsgYyNNfpoobV6ZfMwJV4j6qsqQkGctis", + "PrivKey": "CAESQKjZx7ETZ/wbHmoBhAexrAg3m0rsC5DPzH07UgFmldotq2oRx/UN4JXlIBz17kWUaIw2+EbddLMGV/SJTlO9brA=" + }, + "Internal": {}, + "Ipns": { + "RecordLifetime": "", + "RepublishPeriod": "", + "ResolveCacheSize": 128 + }, + "Migration": { + "DownloadSources": [], + "Keep": "" + }, + "Mounts": { + "FuseAllowOther": false, + "IPFS": "/ipfs", + "IPNS": "/ipns" + }, + "Peering": { + "Peers": null + }, + "Pinning": { + "RemoteServices": {} + }, + "Plugins": { + "Plugins": null + }, + "Provider": { + "Strategy": "" + }, + "Pubsub": { + "DisableSigning": false, + "Router": "" + }, + "Reprovider": {}, + "Routing": { + "AcceleratedDHTClient": false, + "Methods": null, + "Routers": null + }, + "Swarm": { + "AddrFilters": null, + "ConnMgr": {}, + "DisableBandwidthMetrics": false, + "DisableNatPortMap": false, + "RelayClient": {}, + "RelayService": {}, + "ResourceMgr": {}, + "Transports": { + "Multiplexers": {}, + "Network": {}, + "Security": {} + } + } +} diff --git a/huggingface_scraper/ipfs_kit_lib/datastore_spec b/huggingface_scraper/ipfs_kit_lib/datastore_spec new file mode 100644 index 0000000..7bf9626 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/datastore_spec @@ -0,0 +1 @@ +{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/identity.json b/huggingface_scraper/ipfs_kit_lib/identity.json new file mode 100755 index 0000000..8488599 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/identity.json @@ -0,0 +1,4 @@ +{ + "id": "12D3KooWECihD8h6TooNoqJAVFDsP5MgUiVcy7XYRRmkFM3yyYME", + "private_key": "CAESQCdeFjj9HSI9+LDwsHA84hhfKj7GoLVWTL3yD6FWUqCXQSi7xqLG+6V+9ROfWtlfs3wR8UsuifuWSVoSHkfaPnE=" +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/install_ipfs.js b/huggingface_scraper/ipfs_kit_lib/install_ipfs.js new file mode 100644 index 0000000..33a63b5 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/install_ipfs.js @@ -0,0 +1,836 @@ + +const { execSync, exec } = require('child_process'); +const fs = require('fs'); +const os = require('os'); +const path = require('path'); + + +class InstallIPFS { + constructor(resources, meta = null) { + if (meta !== null) { + this.config = meta.config ? meta.config : null; + + if (meta.role) { + this.role = meta.role; + if (!['master', 'worker', 'leecher'].includes(this.role)) { + throw new Error("role is not either master, worker, leecher"); + } + } else { + this.role = "leecher"; + } + + if (meta.ipfs_path) { + this.ipfs_path = meta.ipfs_path; + if (!fs.existsSync(this.ipfs_path)) { + fs.mkdirSync(this.ipfs_path, { recursive: true }); + let testDisk = new testFio(); + this.disk_name = testDisk.diskDeviceNameFromLocation(this.ipfs_path); + this.disk_stats = { + disk_size: testDisk.diskDeviceTotalCapacity(this.disk_name), + disk_used: testDisk.diskDeviceUsedCapacity(this.disk_name), + disk_avail: testDisk.diskDeviceAvailCapacity(this.disk_name), + disk_name: this.disk_name + }; + } + } else { + this.ipfs_path = null; + this.disk_stats = null; + } + + this.cluster_name = meta.cluster_name ? meta.cluster_name : null; + this.cluster_location = meta.cluster_location ? meta.cluster_location : "/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv"; + + if (['leecher', 'worker', 'master'].includes(this.role) && this.ipfs_path) { + // Bind the methods for installing and configuring IPFS + this.ipfs_install_command = this.install_ipfs_daemon.bind(this); + this.ipfs_config_command = this.config_ipfs.bind(this); + } + + if (this.role === "worker" && this.cluster_name && this.ipfs_path) { + // Bind methods for worker role + this.cluster_install = this.install_ipfs_cluster_follow.bind(this); + this.cluster_config = this.config_ipfs_cluster_follow.bind(this); + } + + if (this.role === "master" && this.cluster_name && this.ipfs_path) { + // Bind methods for master role + this.cluster_ctl_install = this.install_ipfs_cluster_ctl.bind(this); + this.cluster_ctl_config = this.config_ipfs_cluster_ctl.bind(this); + this.cluster_service_install = this.install_ipfs_cluster_service.bind(this); + this.cluster_service_config = this.config_ipfs_cluster_service.bind(this); + } + } + } + + installIPFSDaemon() { + let detect = ''; + try { + detect = execSync("which ipfs").toString().trim(); + if (detect.length > 0) { + return true; + } + } catch (e) { + console.error(e); + detect = ''; + } + + if (!detect) { + try { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipfs-')); + const tarFile = path.join(tmpDir, "kubo.tar.gz"); + execSync(`wget https://dist.ipfs.tech/kubo/v0.26.0/kubo_v0.26.0_linux-amd64.tar.gz -O ${tarFile}`); + execSync(`tar -xvzf ${tarFile} -C ${tmpDir}`); + execSync(`cd ${tmpDir}/kubo && sudo bash install.sh`); + + const results = execSync("ipfs --version").toString().trim(); + fs.writeFileSync("/etc/systemd/system/ipfs.service", "Contents of ipfs_service variable or actual service config"); + execSync("systemctl enable ipfs"); + + return results.includes("ipfs"); + } catch (e) { + console.error(e); + return false; + } + } + } + + installIPFSClusterFollow() { + // Check if ipfs-cluster-follow is already installed + exec('which ipfs-cluster-follow', (error, stdout, stderr) => { + if (!error && stdout) { + console.log('ipfs-cluster-follow is already installed.'); + return true; + } else { + console.log('ipfs-cluster-follow is not installed, proceeding with installation.'); + + // Downloading tarball + const url = 'https://dist.ipfs.tech/ipfs-cluster-follow/v1.0.8/ipfs-cluster-follow_v1.0.8_linux-amd64.tar.gz'; + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipfs-cluster-follow-')); + const tarPath = path.join(tmpDir, 'ipfs-cluster-follow.tar.gz'); + + const file = fs.createWriteStream(tarPath); + https.get(url, function(response) { + response.pipe(file); + file.on('finish', () => { + file.close(); + console.log('Download completed.'); + + // Extracting tarball + tar.x({ + file: tarPath, + C: tmpDir, + }).then(() => { + console.log('Extraction completed.'); + const binPath = path.join(tmpDir, 'ipfs-cluster-follow', 'ipfs-cluster-follow'); + execSync(`sudo mv ${binPath} /usr/local/bin/ipfs-cluster-follow`); + try { + // Verify installation + const version = execSync('ipfs-cluster-follow --version').toString().trim(); + console.log(`Installed ipfs-cluster-follow version: ${version}`); + + // Write and enable systemd service + const serviceConfig = '...'; // Define your systemd service file content here + fs.writeFileSync('/etc/systemd/system/ipfs-cluster-follow.service', serviceConfig); + execSync('systemctl enable ipfs-cluster-follow'); + console.log('ipfs-cluster-follow service enabled.'); + } catch (e) { + console.error('Error verifying ipfs-cluster-follow installation:', e); + return false; + } + }).catch((err) => { + console.error('Error extracting file:', err); + }); + }); + }).on('error', (err) => { + // Handle errors + console.error('Error downloading file:', err); + fs.unlink(dest); + }); + } + }); + } + + installIPFSClusterCtl() { + try { + const detect = execSync("which ipfs-cluster-ctl").toString().trim(); + if (detect) { + console.log('ipfs-cluster-ctl is already installed.'); + return true; + } + } catch (e) { + console.error(e.message); + } + + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipfs-cluster-ctl-')); + const tarPath = path.join(tmpDir, 'ipfs-cluster-ctl.tar.gz'); + const url = "https://dist.ipfs.tech/ipfs-cluster-ctl/v1.0.8/ipfs-cluster-ctl_v1.0.8_linux-amd64.tar.gz"; + + // Download and extract the tarball + const file = fs.createWriteStream(tarPath); + https.get(url, (response) => { + response.pipe(file); + file.on('finish', () => { + file.close(); + console.log('Download completed.'); + tar.x({ + file: tarPath, + C: tmpDir, + }).then(() => { + console.log('Extraction completed.'); + const binPath = path.join(tmpDir, 'ipfs-cluster-ctl', 'ipfs-cluster-ctl'); + execSync(`sudo mv ${binPath} /usr/local/bin/ipfs-cluster-ctl`); + try { + // Verify installation + const version = execSync('ipfs-cluster-ctl --version').toString().trim(); + console.log(`Installed ipfs-cluster-ctl version: ${version}`); + return true; + } catch (e) { + console.error('Error verifying ipfs-cluster-ctl installation:', e); + return false; + } + }).catch((err) => { + console.error('Error extracting file:', err); + }); + }); + }).on('error', (err) => { + console.error('Error downloading file:', err); + fs.unlink(tarPath, (err) => { + if (err) console.error(`Error removing temporary tarball: ${err}`); + }); + }); + } + + installIPFSClusterService() { + try { + const detect = execSync("which ipfs-cluster-service").toString().trim(); + if (detect) { + console.log('ipfs-cluster-service is already installed.'); + return true; + } + } catch (e) { + console.error(e.message); + } + + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipfs-cluster-service-')); + const tarPath = path.join(tmpDir, 'ipfs-cluster-service.tar.gz'); + const url = "https://dist.ipfs.tech/ipfs-cluster-service/v1.0.8/ipfs-cluster-service_v1.0.8_linux-amd64.tar.gz"; + + // Download and extract the tarball + const file = fs.createWriteStream(tarPath); + https.get(url, (response) => { + response.pipe(file); + file.on('finish', () => { + file.close(); + console.log('Download completed.'); + tar.x({ + file: tarPath, + C: tmpDir, + }).then(() => { + console.log('Extraction completed.'); + const binPath = path.join(tmpDir, 'ipfs-cluster-service', 'ipfs-cluster-service'); + execSync(`sudo mv ${binPath} /usr/local/bin/ipfs-cluster-service`); + try { + // Verify installation + const version = execSync('ipfs-cluster-service --version').toString().trim(); + console.log(`Installed ipfs-cluster-service version: ${version}`); + + // Assuming ipfs_cluster_service is the content of your service file + const serviceContent = `your service file content here`; + fs.writeFileSync('/etc/systemd/system/ipfs-cluster-service.service', serviceContent); + execSync('systemctl enable ipfs-cluster-service'); + console.log('ipfs-cluster-service service enabled.'); + return true; + } catch (e) { + console.error('Error verifying ipfs-cluster-service installation:', e); + return false; + } + }).catch((err) => { + console.error('Error extracting file:', err); + }); + }); + }).on('error', (err) => { + console.error('Error downloading file:', err); + fs.unlink(tarPath, (err) => { + if (err) console.error(`Error removing temporary tarball: ${err}`); + }); + }); + } + + installIPGet() { + try { + // Check if ipget is already installed + const detect = execSync("which ipget").toString().trim(); + if (detect) { + console.log('ipget is already installed.'); + return true; + } + } catch (e) { + console.error(e.message); + } + + // Prepare for download and extraction + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipget-')); + const tarPath = path.join(tmpDir, 'ipget.tar.gz'); + const url = "https://dist.ipfs.tech/ipget/v0.10.0/ipget_v0.10.0_linux-amd64.tar.gz"; + + // Download the tarball + https.get(url, (response) => { + const fileStream = fs.createWriteStream(tarPath); + response.pipe(fileStream); + fileStream.on('finish', () => { + fileStream.close(); + console.log('Downloaded ipget tarball.'); + + // Extract the tarball + tar.x({ + file: tarPath, + C: tmpDir, + }).then(() => { + console.log('Extracted ipget.'); + + // Move to bin and install + const installScriptPath = path.join(tmpDir, 'ipget', 'install.sh'); + execSync(`cd ${tmpDir}/ipget && sudo bash install.sh`); + + // Update system settings + execSync('sudo sysctl -w net.core.rmem_max=2500000'); + execSync('sudo sysctl -w net.core.wmem_max=2500000'); + + // Verify installation + try { + const version = execSync('ipget --version').toString().trim(); + console.log(`Installed ipget version: ${version}`); + return true; + } catch (verificationError) { + console.error('Error verifying ipget installation:', verificationError); + return false; + } + }).catch((extractionError) => { + console.error('Error extracting ipget:', extractionError); + }); + }); + }).on('error', (downloadError) => { + console.error('Error downloading ipget:', downloadError); + }); + } + + configIPFSClusterService(options = {}) { + let clusterName = options.cluster_name || this.cluster_name; + let diskStats = options.disk_stats || this.disk_stats; + let ipfsPath = options.ipfs_path || this.ipfs_path; + + // Validate required parameters + if (!diskStats) throw new Error("disk_stats is None"); + if (!ipfsPath) throw new Error("ipfs_path is None"); + + // Update instance properties if options are provided + if (options.cluster_name) this.cluster_name = options.cluster_name; + if (options.disk_stats) this.disk_stats = options.disk_stats; + if (options.ipfs_path) this.ipfs_path = options.ipfs_path; + + // Ensure the IPFS path ends with "/ipfs/" + ipfsPath = path.join(ipfsPath, "ipfs") + path.sep; + + let results1 = ""; + + try { + // Initialize the IPFS cluster service with the given IPFS path + const command1 = `IPFS_PATH=${ipfsPath} ipfs-cluster-service init -f`; + results1 = execSync(command1).toString(); + } catch (e) { + results1 = e.toString(); + } + + return { + results1: results1 + }; + } + + configIPFSClusterCtl(options = {}) { + let clusterName = options.cluster_name || this.cluster_name; + let diskStats = options.disk_stats || this.disk_stats; + let ipfsPath = options.ipfs_path || this.ipfs_path; + + if (!diskStats) throw new Error("disk_stats is None"); + if (!ipfsPath) throw new Error("ipfs_path is None"); + + this.cluster_name = clusterName; + this.disk_stats = diskStats; + this.ipfs_path = ipfsPath; + + let results1; + if (clusterName && ipfsPath && diskStats) { + try { + // The following command is commented out because it's a placeholder for actual implementation. + // let command1 = `ipfs-cluster-ctl ${clusterName} init`; + // results1 = execSync(command1).toString(); + + let thisDir = __dirname; + let homeDir = os.homedir(); + let configDir = path.join(homeDir, '.ipfs-cluster'); + let pebbleDir = path.join(ipfsPath, 'pebble'); + + if (!fs.existsSync(configDir)) { + fs.mkdirSync(configDir, { recursive: true }); + } + + if (!fs.existsSync(pebbleDir)) { + fs.mkdirSync(pebbleDir, { recursive: true }); + } + + // Copying configuration files (service.json and peerstore) to the configuration directory. + fs.copyFileSync(path.join(thisDir, 'service.json'), path.join(configDir, 'service.json')); + fs.copyFileSync(path.join(thisDir, 'peerstore'), path.join(configDir, 'peerstore')); + + // Linking pebble directory + let linkPath = path.join(configDir, 'pebble'); + if (fs.existsSync(linkPath)) { + fs.unlinkSync(linkPath); + } + fs.symlinkSync(pebbleDir, linkPath); + + // This is a placeholder for starting the IPFS cluster service daemon. + // exec('ipfs-cluster-service daemon'); + } catch (e) { + console.error(e); + // Handle errors appropriately + } + } + + return { + results1: results1 + }; + } + + configIPFSClusterFollow(options = {}) { + let clusterName = options.cluster_name || this.cluster_name; + let diskStats = options.disk_stats || this.disk_stats; + let ipfsPath = options.ipfs_path || this.ipfs_path; + + if (!diskStats) throw new Error("disk_stats is None"); + if (!ipfsPath) throw new Error("ipfs_path is None"); + + ipfsPath = path.join(ipfsPath, "ipfs_cluster"); + // Assuming run_ipfs_daemon is implemented elsewhere + // this.run_ipfs_daemon(); + if (clusterName && ipfsPath && diskStats) { + try { + let command1 = `ipfs-cluster-follow ${clusterName} init ${ipfsPath}`; + let results1 = execSync(command1).toString(); + + let thisDir = __dirname; + let clusterPath = path.join(ipfsPath, clusterName); + let homeDir = os.homedir(); + let followPath = path.join(homeDir, ".ipfs-cluster-follow", clusterName); + + if (!fs.existsSync(clusterPath)) { + fs.mkdirSync(clusterPath, { recursive: true }); + } + if (!fs.existsSync(followPath)) { + fs.mkdirSync(followPath, { recursive: true }); + } + + // Copy the service and peerstore files + fs.copyFileSync(path.join(thisDir, 'service_follower.json'), path.join(followPath, 'service.json')); + fs.copyFileSync(path.join(thisDir, 'peerstore'), path.join(followPath, 'peerstore')); + + // Link the pebble directory if needed + let pebbleLink = path.join(followPath, "pebble"); + let pebbleDir = path.join(clusterPath, "pebble"); + if (fs.existsSync(pebbleLink)) { + fs.unlinkSync(pebbleLink); + } + if (!fs.existsSync(pebbleDir)) { + fs.mkdirSync(pebbleDir, { recursive: true }); + } + fs.symlinkSync(pebbleDir, pebbleLink); + + // Placeholder for starting the IPFS cluster follow daemon + // let command5 = `ipfs-cluster-follow ${clusterName} run`; + // exec(command5); + } catch (e) { + console.error(e); + // Handle errors appropriately + } + } + + // Placeholder: results structure to mimic the Python version's output + let results = { + results1: "Command execution result or error message" + }; + + return results; + } + + + configIPFS(options = {}) { + let diskStats = options.disk_stats || this.disk_stats; + let ipfsPath = options.ipfs_path || this.ipfs_path; + + if (!diskStats) throw new Error("disk_stats is None"); + if (!ipfsPath) throw new Error("ipfs_path is None"); + + ipfsPath = path.join(ipfsPath, "ipfs"); + fs.mkdirSync(ipfsPath, { recursive: true }); + + let results = { + config: null, + identity: null, + public_key: null + }; + + if (diskStats && ipfsPath) { + try { + execSync(`IPFS_PATH=${ipfsPath} ipfs init --profile=badgerds`); + let peerId = execSync(`IPFS_PATH=${ipfsPath} ipfs id`).toString(); + execSync(`IPFS_PATH=${ipfsPath} ipfs config profile apply badgerds`); + + // Calculate available disk space and adjust storage allocation + let diskAvailable = parseFloat(diskStats.disk_avail); + let minFreeSpace = 32 * 1024 * 1024 * 1024; // 32 GB + if (diskAvailable > minFreeSpace) { + let allocate = Math.ceil(((diskAvailable - minFreeSpace) * 0.8) / 1024 / 1024 / 1024); + execSync(`IPFS_PATH=${ipfsPath} ipfs config Datastore.StorageMax ${allocate}GB`); + } + + // Load peer list and add to bootstrap + let peerListPath = path.join(__dirname, "peerstore"); + if (fs.existsSync(peerListPath)) { + let peerList = fs.readFileSync(peerListPath).toString().split("\n"); + peerList.forEach(peer => { + if (peer) { + execSync(`IPFS_PATH=${ipfsPath} ipfs bootstrap add ${peer}`); + } + }); + } + + // Assuming ipfs_service_text contains the systemd service configuration + // if (os.geteuid() === 0) { + // fs.writeFileSync("/etc/systemd/system/ipfs.service", ipfs_service_text); + // } + + results.config = execSync(`IPFS_PATH=${ipfsPath} ipfs config show`).toString(); + results.identity = peerId.match(/"ID":\s?"([^"]+)"/)[1]; + results.public_key = peerId.match(/"PublicKey":\s?"([^"]+)"/)[1]; + } catch (error) { + console.error('Error configuring IPFS:', error); + } + } + + return results; + } + + + runIPFSClusterService(options = {}) { + let ipfsPath = options.ipfs_path || this.ipfs_path; + ipfsPath = path.join(ipfsPath, "ipfs"); + fs.mkdirSync(ipfsPath, { recursive: true }); + + const command = `IPFS_CLUSTER_PATH=${ipfsPath} ipfs-cluster-service`; + const process = exec(command); + + process.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + process.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + process.on('close', (code) => { + console.log(`ipfs-cluster-service process exited with code ${code}`); + }); + + return process; + } + + runIPFSClusterCtl(options = {}) { + let ipfsPath = options.ipfs_path || this.ipfs_path; + ipfsPath = path.join(ipfsPath, "ipfs"); + fs.mkdirSync(ipfsPath, { recursive: true }); + + const command = `IPFS_CLUSTER_PATH=${ipfsPath} ipfs-cluster-ctl`; + const process = exec(command); + + process.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + process.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + process.on('close', (code) => { + console.log(`ipfs-cluster-ctl process exited with code ${code}`); + }); + + return process; + } + + + ensureDirSync(dirPath) { + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + } + + runIPFSClusterFollow() { + this.ensureDirSync(this.ipfs_path); + const command = "ipfs-cluster-follow"; + const args = ["mycluster", "init", this.ipfs_path]; // Example, adjust as needed + const process = spawn(command, args, { env: { ...process.env, IPFS_PATH: this.ipfs_path } }); + + process.stdout.on('data', data => console.log(data.toString())); + process.stderr.on('data', data => console.error(data.toString())); + + return process; + } + + runIPFSDaemon() { + this.ensureDirSync(this.ipfs_path); + const command = "ipfs"; + const args = ["daemon", "--enable-pubsub-experiment"]; + const process = spawn(command, args, { env: { ...process.env, IPFS_PATH: this.ipfs_path } }); + + process.stdout.on('data', data => console.log(data.toString())); + process.stderr.on('data', data => console.error(data.toString())); + + return process; + } + + + killProcessByPattern(pattern) { + try { + // Using pgrep and pkill for more precise process management + const pids = execSync(`pgrep -f '${pattern}'`).toString().trim(); + if (pids) { + execSync(`pkill -f '${pattern}'`); + } + return true; + } catch (error) { + console.error(`Failed to kill process with pattern ${pattern}: ${error}`); + return false; + } + } + + removeDirectorySync(dirPath) { + // Recursive removal using rmSync in newer Node.js versions, for older versions consider rimraf package + try { + fs.rmSync(dirPath, { recursive: true, force: true }); + return true; + } catch (error) { + console.error(`Failed to remove directory ${dirPath}: ${error}`); + return false; + } + } + + uninstallIPFS() { + this.killProcessByPattern('ipfs.*daemon'); + this.killProcessByPattern('ipfs-cluster-follow'); + this.removeDirectorySync(this.ipfs_path); + this.removeDirectorySync(path.join(os.homedir(), '.ipfs-cluster-follow', 'ipfs_cluster', 'api-socket')); + return true; + } + + + killProcessByPattern(pattern) { + try { + // Using pgrep and pkill for more precise process management + const pids = execSync(`pgrep -f '${pattern}'`).toString().trim(); + if (pids) { + execSync(`pkill -f '${pattern}'`); + } + return true; + } catch (error) { + console.error(`Failed to kill process with pattern ${pattern}: ${error}`); + return false; + } + } + + removeDirectorySync(dirPath) { + // Recursive removal using rmSync in newer Node.js versions, for older versions consider rimraf package + try { + fs.rmSync(dirPath, { recursive: true, force: true }); + return true; + } catch (error) { + console.error(`Failed to remove directory ${dirPath}: ${error}`); + return false; + } + } + + uninstallIPFS() { + this.killProcessByPattern('ipfs.*daemon'); + this.killProcessByPattern('ipfs-cluster-follow'); + this.removeDirectorySync(this.ipfs_path); + this.removeDirectorySync(path.join(os.homedir(), '.ipfs-cluster-follow', 'ipfs_cluster', 'api-socket')); + return true; + } + + testUninstall() { + if (['leecher', 'worker', 'master'].includes(this.role)) { + this.uninstallIPFS(); + } + if (this.role === "master") { + this.uninstallIPFSClusterService(); + this.uninstallIPFSClusterCtl(); + } + if (this.role === "worker") { + this.uninstallIPFSClusterFollow(); + } + } + + installExecutables() { + let results = {}; + if (['leecher', 'worker', 'master'].includes(this.role)) { + let ipfs = this.installIPFSDaemon(); + results["ipfs"] = ipfs; + } + if (this.role === "master") { + let clusterService = this.installIPFSClusterService(); + let clusterCtl = this.installIPFSClusterCtl(); + results["cluster_service"] = clusterService; + results["cluster_ctl"] = clusterCtl; + } + if (this.role === "worker") { + let clusterFollow = this.installIPFSClusterFollow(); + results["cluster_follow"] = clusterFollow; + } + return results; + } + + + configExecutables() { + let results = {}; + if (['leecher', 'worker', 'master'].includes(this.role)) { + let ipfsConfig = this.configIPFS(); + results["ipfs_config"] = ipfsConfig.config; + } + if (this.role === "master") { + let clusterServiceConfig = this.configIPFSClusterService(); + let clusterCtlConfig = this.configIPFSClusterCtl(); + results["cluster_service_config"] = clusterServiceConfig.config; + results["cluster_ctl_config"] = clusterCtlConfig.config; + } + if (this.role === "worker") { + let clusterFollowConfig = this.configIPFSClusterFollow(); + results["cluster_follow_config"] = clusterFollowConfig.config; + } + return results; + } + + ipfsTestInstall() { + try { + execSync('which ipfs'); + return true; + } catch (error) { + return false; + } + } + + ipfsClusterServiceTestInstall() { + try { + execSync('which ipfs-cluster-service'); + return true; + } catch (error) { + return false; + } + } + + ipfsClusterFollowTestInstall() { + try { + execSync('which ipfs-cluster-follow'); + return true; + } catch (error) { + return false; + } + } + + ipfsClusterCtlTestInstall() { + try { + execSync('which ipfs-cluster-ctl'); + return true; + } catch (error) { + return false; + } + } + + ipgetTestInstall() { + try { + execSync('which ipget'); + return true; + } catch (error) { + return false; + } + } + + installAndConfigure() { + let results = {}; + try { + if (['leecher', 'worker', 'master'].includes(this.role)) { + // Assuming these methods are implemented and properly handle async operations + this.installIPGet(); + this.installIPFSDaemon(); + const ipfsConfig = this.configIPFS(); + + results.ipfs = true; // Assuming installation success + results.ipfs_config = ipfsConfig; + this.runIPFSDaemon(); + } + if (this.role === 'master') { + const clusterService = this.installIPFSClusterService(); + const clusterCtl = this.installIPFSClusterCtl(); + const clusterServiceConfig = this.configIPFSClusterService(); + const clusterCtlConfig = this.configIPFSClusterCtl(); + + results.cluster_service = clusterService; + results.cluster_ctl = clusterCtl; + results.cluster_service_config = clusterServiceConfig; + results.cluster_ctl_config = clusterCtlConfig; + } + if (this.role === 'worker') { + const clusterFollow = this.installIPFSClusterFollow(); + const clusterFollowConfig = this.configIPFSClusterFollow(); + + results.cluster_follow = clusterFollow; + results.cluster_follow_config = clusterFollowConfig; + } + + // Systemctl daemon reload + execAsync('systemctl daemon-reload'); + results.systemctl_reload = true; + } catch (error) { + console.error('Error during installation and configuration:', error); + return null; // Or handle the error as needed + } + + return results; + } + +} +// run this if the script is run directly + +if (require.main === module) { + const meta = { + role: "worker", + clusterName: "cloudkit_storage", + clusterLocation: "/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv", + // Alternative cluster location (commented out in the example) + // clusterLocation: "/ip4/167.99.96.231/udp/4001/quic-v1/p2p/12D3KooWS9pEXDb2FEsDv9TH4HicZgwhZtthHtSdSfyKKDnkDu8D", + ipfsPath: "/home/kensix/.cache/ipfs/", + }; + + // Initialize the IPFS configuration manager with the provided metadata + const configManager = new IPFSConfigManager(meta.role, meta.clusterName, meta.ipfsPath); + + // Execute the installation and configuration process + async function runInstallationAndConfiguration() { + try { + const results = await configManager.installAndConfigure(); + console.log('Installation and Configuration Results:', results); + } catch (error) { + console.error('An error occurred during the installation and configuration process:', error); + } + } + + runInstallationAndConfiguration(); +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/ipfs.js b/huggingface_scraper/ipfs_kit_lib/ipfs.js new file mode 100644 index 0000000..252f83f --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/ipfs.js @@ -0,0 +1,680 @@ +const { exec } = require('child_process'); +const fs = require('fs'); +const os = require('os'); +const path = require('path'); + + +class ipfs { + constructor(resources, meta = null) { + if (meta !== null) { + if ('config' in meta) { + if (meta['config'] !== null) { + this.config = meta['config']; + } + } + if ('role' in meta) { + if (meta['role'] !== null) { + this.role = meta['role']; + if (!['master', 'worker', 'leecher'].includes(this.role)) { + throw new Error('role is not either master, worker, leecher'); + } else { + this.role = 'leecher'; + } + } + } + if ('cluster_name' in meta) { + if (meta['cluster_name'] !== null) { + this.cluster_name = meta['cluster_name']; + } + } + if ('ipfs_path' in meta) { + if (meta['ipfs_path'] !== null) { + this.ipfs_path = meta['ipfs_path']; + } + } + if (this.role === 'leecher' || this.role === 'worker' || this.role === 'master') { + this.commands = {}; + } + } + } + + daemon_start(kwargs = {}) { + let cluster_name; + if ('cluster_name' in this) { + cluster_name = this.cluster_name; + } + if ('cluster_name' in kwargs) { + cluster_name = kwargs['cluster_name']; + } + + let results1 = null; + let results2 = null; + let ipfs_ready = false; + + // Run this if root and check if it passes + if (os.userInfo().uid === 0) { + try { + const command1 = "systemctl start ipfs"; + exec(command1, (error, stdout, stderr) => { + if (error) { + results1 = error.message; + } else { + results1 = stdout; + + const command2 = "ps -ef | grep ipfs | grep daemon | grep -v grep | wc -l"; + exec(command2, (error, stdout, stderr) => { + if (!error && parseInt(stdout.trim()) > 0) { + ipfs_ready = true; + } + }); + } + }); + } catch (error) { + results1 = error.message; + } + } + + // Run this if user is not root or root user fails check if it passes + if (os.userInfo().uid !== 0 || ipfs_ready === false) { + try { + const command2 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs daemon --enable-gc --enable-pubsub-experiment`; + const subprocess = spawn(command2, { shell: true, stdio: 'pipe' }); + subprocess.stdout.on('data', (data) => { + results2 = data.toString(); + }); + } catch (error) { + results2 = error.message; + } + } + + const results = { + "systemctl": results1, + "bash": results2 + }; + + return results; + } + + + daemon_stop(kwargs = {}) { + let cluster_name; + if ('cluster_name' in this) { + cluster_name = this.cluster_name; + } + if ('cluster_name' in kwargs) { + cluster_name = kwargs['cluster_name']; + } + + let results1 = null; + let results2 = null; + let ipfs_ready = false; + + // Run this if root and check if it passes + if (os.userInfo().uid === 0) { + try { + const command1 = "systemctl stop ipfs"; + exec(command1, (error, stdout, stderr) => { + if (error) { + results1 = error.message; + } else { + results1 = stdout; + + const command2 = "ps -ef | grep ipfs | grep daemon | grep -v grep | wc -l"; + exec(command2, (error, stdout, stderr) => { + if (!error && parseInt(stdout.trim()) === 0) { + ipfs_ready = true; + } + }); + } + }); + } catch (error) { + results1 = error.message; + } + } + + // Run this if user is not root or root user fails check if it passes + if (os.userInfo().uid !== 0 || ipfs_ready === false) { + try { + const command2 = "ps -ef | grep ipfs | grep daemon | grep -v grep | awk '{print $2}' | xargs kill -9"; + exec(command2, (error, stdout, stderr) => { + if (error) { + results2 = error.message; + } else { + results2 = stdout; + } + }); + } catch (error) { + results2 = error.message; + } + } + + const results = { + "systemctl": results1, + "bash": results2 + }; + + return results; + } + + + async ipfs_resize(size, kwargs = {}) { + const command1 = this.daemon_stop(); + const command2 = `ipfs config --json Datastore.StorageMax ${size}GB`; + const results1 = await new Promise((resolve, reject) => { + exec(command2, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + const command3 = this.daemon_start(); + return results1; + } + + async ipfs_ls_pin(kwargs = {}) { + if ('hash' in kwargs) { + const hash = kwargs['hash']; + let request1 = null; + try { + request1 = await this.ipfs_execute({ + "command": "cat", + "hash": hash + }); + } catch (error) { + console.error(error); + } + if (request1 !== null) { + return request1; + } + let request2 = null; + try { + const command = `ipfs cat ${hash}`; + request2 = await new Promise((resolve, reject) => { + exec(command, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + } catch (error) { + console.error(error); + } + if (request2 !== null) { + return request2; + } + } + throw new Error("hash not found"); + } + + + async ipfs_get_pinset(kwargs = {}) { + const this_tempfile = path.join(os.tmpdir(), 'temp.txt'); + const command = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs pin ls -s > ${this_tempfile}`; + await new Promise((resolve, reject) => { + exec(command, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + const file_data = fs.readFileSync(this_tempfile, 'utf8'); + const pinset = {}; + const parse_results = file_data.split("\n"); + for (let i = 0; i < parse_results.length; i++) { + const data = parse_results[i].split(" "); + if (data.length > 1) { + pinset[data[0]] = data[1]; + } + } + return pinset; + } + + async ipfs_add_pin(pin, kwargs = {}) { + const dirname = path.dirname(__filename); + let result1; + try { + const command1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && cd ${this.ipfs_path}ipfs/ && ipfs pin add ${pin}`; + result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + } catch (error) { + result1 = error; + } + return result1; + } + + async ipfs_mkdir(path, kwargs = {}) { + const this_path_split = path.split("/"); + let this_path = ""; + const results = []; + for (let i = 0; i < this_path_split.length; i++) { + this_path += this_path_split[i] + "/"; + const command1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs files mkdir ${this_path}`; + const result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + results.push(result1); + } + return results; + } + + + async ipfs_add_path2(path, kwargs = {}) { + let ls_dir = []; + if (!fs.existsSync(path)) { + throw new Error("path not found"); + } + if (fs.lstatSync(path).isFile()) { + ls_dir = [path]; + await this.ipfs_mkdir(path.dirname(path), kwargs); + } else if (fs.lstatSync(path).isDirectory()) { + await this.ipfs_mkdir(path, kwargs); + ls_dir = fs.readdirSync(path).map(file => path.join(path, file)); + } + const results1 = []; + for (let i = 0; i < ls_dir.length; i++) { + let argstring = ` --to-files=${ls_dir[i]} `; + const command1 = `ipfs add ${argstring}${ls_dir[i]}`; + const result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + results1.push(result1); + } + return results1; + } + + async ipfs_add_path(path, kwargs = {}) { + let argstring = ""; + let ls_dir = path; + if (!fs.existsSync(path)) { + throw new Error("path not found"); + } + if (fs.lstatSync(path).isFile()) { + await this.ipfs_mkdir(path.dirname(path), kwargs); + } else if (fs.lstatSync(path).isDirectory()) { + await this.ipfs_mkdir(path, kwargs); + } + argstring += `--recursive --to-files=${ls_dir} `; + const command1 = `ipfs add ${argstring}${ls_dir}`; + const result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + const results = {}; + const result_split = result1.split("\n"); + for (let i = 0; i < result_split.length; i++) { + const parts = result_split[i].split(" "); + if (parts.length > 1) { + results[parts[2]] = parts[1]; + } + } + return results; + } + + + async ipfs_remove_path(path, kwargs = {}) { + let result1 = null; + let result2 = null; + const stats = await this.ipfs_stat_path(path, kwargs); + if (Object.keys(stats).length === 0) { + throw new Error("path not found"); + } + const pin = stats['pin']; + if (stats["type"] === "file") { + const command1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs files rm ${path}`; + result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + const command2 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs pin rm ${pin}`; + result2 = await new Promise((resolve, reject) => { + exec(command2, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + result2 = result2.split("\n"); + } else if (stats["type"] === "directory") { + const contents = await this.ipfs_ls_path(path, kwargs); + for (let i = 0; i < contents.length; i++) { + if (contents[i].length > 0) { + result1 = await this.ipfs_remove_path(`${path}/${contents[i]}`, kwargs); + } + } + } else { + throw new Error("unknown path type"); + } + const results = { + "files_rm": result1, + "pin_rm": result2 + }; + return results; + } + + async ipfs_stat_path(path, kwargs = {}) { + try { + const stat1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs files stat ${path}`; + const results1 = await new Promise((resolve, reject) => { + exec(stat1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + const results1Split = results1.split("\n"); + if (results1Split.length > 0 && Array.isArray(results1Split)) { + const pin = results1Split[0]; + const size = parseFloat(results1Split[1].split(": ")[1]); + const culumulative_size = parseFloat(results1Split[2].split(": ")[1]); + const child_blocks = parseFloat(results1Split[3].split(": ")[1]); + const type = results1Split[4].split(": ")[1]; + const results = { + "pin": pin, + "size": size, + "culumulative_size": culumulative_size, + "child_blocks": child_blocks, + "type": type + }; + return results; + } else { + return false; + } + } catch (error) { + console.error(error.message); + return false; + } + } + + + async ipfs_name_resolve(kwargs = {}) { + let result1 = null; + try { + const command1 = `export IPFS_PATH=${this.ipfs_path}/ipfs/ && ipfs name resolve ${kwargs['path']}`; + result1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + } catch (error) { + result1 = error.message; + } + return result1; + } + + async ipfs_name_publish(path, kwargs = {}) { + if (!fs.existsSync(path)) { + throw new Error("path not found"); + } + let results1 = null; + let results2 = null; + try { + const command1 = `export IPFS_PATH=${this.ipfs_path}/ipfs/ && ipfs add --cid-version 1 ${path}`; + results1 = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + results1 = results1.trim(); + const cid = results1.split(" ")[1]; + const fname = results1.split(" ")[2]; + results1 = { + [fname]: cid + }; + } catch (error) { + results1 = error.message; + } + + try { + const command2 = `export IPFS_PATH=${this.ipfs_path}/ipfs/ && ipfs name publish ${results1[Object.keys(results1)[0]]}`; + results2 = await new Promise((resolve, reject) => { + exec(command2, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + results2 = results2.split(":")[0].split(" ")[results2.split(":")[0].split(" ").length - 1]; + } catch (error) { + results2 = error.message; + } + + const results = { + "add": results1, + "publish": results2 + }; + return results; + } + + + async ipfs_ls_path(path, kwargs = {}) { + let results1 = null; + try { + const stat1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs files ls ${path}`; + results1 = await new Promise((resolve, reject) => { + exec(stat1, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + results1 = results1.split("\n"); + } catch (error) { + results1 = error.message; + } + if (results1.length > 0 && Array.isArray(results1)) { + return results1; + } else { + return false; + } + } + + async ipfs_remove_pin(cid, kwargs = {}) { + let result1 = null; + let stdout = null; + let stderr = null; + try { + const command1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs pin rm ${cid}`; + const output = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject({ stdout, stderr }); + } else { + resolve({ stdout, stderr }); + } + }); + }); + stdout = output.stdout; + stderr = output.stderr; + } catch (error) { + result1 = error.message; + } + if (stdout && stdout.includes("unpinned")) { + result1 = true; + } + return result1; + } + + + async ipfs_remove_pin(cid, kwargs = {}) { + let result1 = null; + let stdout = null; + let stderr = null; + try { + const command1 = `export IPFS_PATH=${this.ipfs_path}ipfs/ && ipfs pin rm ${cid}`; + const output = await new Promise((resolve, reject) => { + exec(command1, (error, stdout, stderr) => { + if (error) { + reject({ stdout, stderr }); + } else { + resolve({ stdout, stderr }); + } + }); + }); + stdout = output.stdout; + stderr = output.stderr; + } catch (error) { + result1 = error.message; + } + if (stdout && stdout.includes("unpinned")) { + result1 = true; + } + return result1; + } + + async test_ipfs() { + let detect = null; + try { + detect = await new Promise((resolve, reject) => { + exec("which ipfs", (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + } catch (error) { + detect = error.message; + } + if (detect && detect.length > 0) { + return true; + } else { + return false; + } + } + + async ipfs_execute(command, kwargs = {}) { + if (typeof kwargs !== 'object') { + throw new Error("kwargs must be an object"); + } + + const executable = "ipfs "; + const options = ["add", "pin", "unpin", "get", "cat", "ls", "refs", "refs-local", "refs-local-recursive", "refs-remote", "refs-remote-recursive", "repo", "version"]; + let execute = ""; + + if (command === "add") { + execute = `${executable}add ${kwargs.file}`; + } + + if (!kwargs.hash) { + throw new Error("hash not found in kwargs"); + } + + if (command === "get") { + execute = `${executable}get ${kwargs.hash} -o ${kwargs.file}`; + } + + if (command === "pin") { + execute = `${executable}pin add ${kwargs.hash}`; + } + + if (command === "unpin") { + execute = `${executable}pin rm ${kwargs.hash}`; + } + + if (command === "cat") { + execute = `${executable}cat ${kwargs.hash}`; + } + + if (command === "ls") { + execute = `${executable}ls ${kwargs.hash}`; + } + + if (command === "refs") { + execute = `${executable}refs ${kwargs.hash}`; + } + + if (command === "refs-local") { + execute = `${executable}refs local ${kwargs.hash}`; + } + + if (command === "refs-local-recursive") { + execute = `${executable}refs local --recursive ${kwargs.hash}`; + } + + if (command === "refs-remote") { + execute = `${executable}refs remote ${kwargs.hash}`; + } + + if (command === "refs-remote-recursive") { + execute = `${executable}refs remote --recursive ${kwargs.hash}`; + } + + if (command === "repo") { + execute = `${executable}repo ${kwargs.hash}`; + } + + if (command === "version") { + execute = `${executable}version ${kwargs.hash}`; + } + + try { + const output = await new Promise((resolve, reject) => { + exec(execute, (error, stdout, stderr) => { + if (error) { + reject(error.message); + } else { + resolve(stdout); + } + }); + }); + console.log(`stdout: ${output}`); + return output; + } catch (error) { + console.log(`error: ${error}`); + return error; + } + } + +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_ctl.js b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_ctl.js new file mode 100644 index 0000000..4e389d6 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_ctl.js @@ -0,0 +1,257 @@ +class IPFSClusterCtl { + constructor(resources, meta = null) { + this.config = {}; + this.role = "leecher"; // Default role + + if (meta !== null) { + if ("config" in meta && meta['config'] !== null) { + this.config = meta['config']; + } + if ("role" in meta && meta['role'] !== null) { + if (["master", "worker", "leecher"].includes(meta['role'])) { + this.role = meta['role']; + } else { + throw new Error("role is not either master, worker, leecher"); + } + } + } + + // Any additional setup for roles can be added here + if (["leecher", "worker", "master"].includes(this.role)) { + // Perform role-specific initialization + } + } + + // Helper function to recursively walk through directory + walkSync(dir, fileList = []) { + fs.readdirSync(dir).forEach(file => { + const filePath = path.join(dir, file); + if (fs.statSync(filePath).isDirectory()) { + this.walkSync(filePath, fileList); + } else { + fileList.push(filePath); + } + }); + return fileList; + } + + ipfsClusterCtlAddPin(dirPath, metadata = {}) { + if (!fs.existsSync(dirPath)) { + throw new Error("Path not found"); + } + + const files = this.walkSync(dirPath); + const results = files.map(file => { + const relativePath = path.relative(dirPath, file); + let argString = metadata[relativePath] ? ` --metadata ${metadata[relativePath]}` : ""; + let command = `ipfs-cluster-ctl pin add ${file}${argString}`; + try { + const output = execSync(command).toString(); + return output; + } catch (error) { + console.error(`Failed to execute command for file ${file}: ${error}`); + return null; + } + }); + + return results.filter(result => result !== null); + } + + + ipfsClusterCtlRemovePin(dirPath) { + if (!fs.existsSync(dirPath)) { + throw new Error("Path not found"); + } + + const files = this.walkSync(dirPath); + const results = files.map(file => { + let command = `ipfs-cluster-ctl pin rm ${file}`; + try { + const output = execSync(command).toString(); + return `Unpinned: ${file}`; + } catch (error) { + console.error(`Failed to execute command for file ${file}: ${error}`); + return `Failed to unpin: ${file}`; + } + }); + + return results; + } + + + // Simplified directory traversal for demonstration + getDirectories(basePath) { + return fs.readdirSync(basePath, { withFileTypes: true }) + .filter(dirent => dirent.isDirectory()) + .map(dirent => path.join(basePath, dirent.name)); + } + + ipfsClusterCtlAddPinRecursive(dirPath, metadata = {}) { + if (!fs.existsSync(dirPath)) { + throw new Error("Path not found"); + } + + // If the path is a directory, traverse and pin each subdirectory recursively. + // Otherwise, pin the file directly. + let targets = fs.statSync(dirPath).isDirectory() ? this.getDirectories(dirPath) : [dirPath]; + const results = targets.map(target => { + const relativePath = path.relative(dirPath, target); + let argString = metadata[relativePath] ? ` --metadata ${metadata[relativePath]}` : ""; + let command = `ipfs-cluster-ctl pin add -r ${target}${argString}`; + + try { + const output = execSync(command, { encoding: 'utf-8' }); + return `Pinned: ${target}`; + } catch (error) { + console.error(`Failed to execute command for ${target}: ${error.message}`); + return `Failed to pin: ${target}`; + } + }); + + return results; + } + + + ipfs_cluster_ctl_execute(args) { + if (!this.options.includes(args[0])) { + console.error(`"${args[0]}" is not a valid command.`); + return; + } + + let command = `${this.executable}${args[0]}`; + + if (args[1]) { + command += ` ${args[1]}`; + + // Validate subcommands for certain options + switch (args[0]) { + case "peers": + if (!["ls", "rm"].includes(args[1])) { + throw new Error("Invalid option for 'peers'"); + } + break; + case "pin": + if (!["add", "rm", "ls", "update"].includes(args[1])) { + throw new Error("Invalid option for 'pin'"); + } + break; + case "health": + if (!["graph", "metrics", "alerts"].includes(args[1])) { + throw new Error("Invalid option for 'health'"); + } + break; + case "ipfs": + if (args[1] !== "gc") { + throw new Error("Invalid option for 'ipfs'"); + } + break; + } + } + + // Special handling for the 'add' command with multiple options + if (args[0] === "add" && args.length > 2) { + const path = args.pop(); // Assuming the last argument is always the path + const options = args.slice(1).join(" "); + command = `${this.executable}add ${options} ${path}`; + } + + exec(command, (error, stdout, stderr) => { + if (error) { + console.error(`Error executing command: ${error}`); + return; + } + if (stderr) { + console.error(`stderr: ${stderr}`); + return; + } + console.log(`stdout: ${stdout}`); + }); + } + + + getPinset() { + // Create a temporary file path + const tempFile = path.join(os.tmpdir(), `pinset-${Date.now()}.txt`); + try { + // Redirect output of the command to the temporary file + execSync(`ipfs-cluster-ctl pin ls > ${tempFile}`); + + // Read and parse the temporary file + const fileData = fs.readFileSync(tempFile, 'utf8'); + const pinset = this.parsePinsetData(fileData); + + // Clean up the temporary file + fs.unlinkSync(tempFile); + + return pinset; + } catch (error) { + console.error(`Failed to get pinset: ${error.message}`); + // Clean up the temporary file in case of an error + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + return {}; + } + } + + parsePinsetData(fileData) { + const pinset = {}; + const parseResults = fileData.split("\n"); + parseResults.forEach(resultLine => { + const resultsList = resultLine.split(" | "); + if (resultsList.length > 1) { // Ensure it's not an empty line + const resultDict = {}; + resultsList.forEach(cell => { + const cellSplit = cell.split(":").map(part => part.trim()); + if (cellSplit.length > 1) { + resultDict[cellSplit[0]] = cellSplit[1]; + } + }); + if (Object.keys(resultDict).length > 0) { + pinset[resultsList[0]] = resultDict; + } + } + }); + return pinset; + } + + ipfsClusterCtlStatus() { + try { + const command = "ipfs-cluster-ctl status"; + const results = execSync(command, { encoding: 'utf8' }); // Directly get the output as a string + return results; + } catch (error) { + console.error(`Error executing ipfs-cluster-ctl status: ${error.message}`); + return null; + } + } + + testIPFSClusterCtl() { + return new Promise((resolve, reject) => { + exec("which ipfs-cluster-ctl", (error, stdout) => { + if (error) { + resolve(false); + } else { + resolve(stdout.trim().length > 0); + } + }); + }); + } +} + +if (require.main === module) { + + (async () => { + const thisIpfsClusterCtl = new IPFSClusterCtl(); + const results = await thisIpfsClusterCtl.testIPFSClusterCtl(); + console.log(results); + + if (results) { + const status = thisIpfsClusterCtl.ipfsClusterCtlStatus(); + console.log(status); + } else { + console.log("ipfs-cluster-ctl is not installed."); + } + })(); + +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_follow.js b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_follow.js new file mode 100644 index 0000000..420bacb --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_follow.js @@ -0,0 +1,190 @@ + class IPFSClusterFollow { + constructor(resources, meta = {}) { + // Default values + this.config = {}; + this.role = 'leecher'; // default role + this.clusterName = ''; + + // Set from meta if provided + if (meta.config) { + this.config = meta.config; + } + + if (meta.role && ['master', 'worker', 'leecher'].includes(meta.role)) { + this.role = meta.role; + } else if (meta.role) { + throw new Error("role is not either master, worker, leecher"); + } + + if (meta.clusterName) { + this.clusterName = meta.clusterName; + } + } + + + ipfsFollowStart(clusterName = this.clusterName) { + let results = { systemctl: false, bash: false }; + + try { + // Attempt to start the ipfs-cluster-follow service + const systemctlStart = execSync("systemctl start ipfs-cluster-follow").toString(); + results.systemctl = systemctlStart; + + // Check if the service is running + const detectResults = execSync("ps -ef | grep ipfs-cluster-follow | grep -v grep").toString().trim(); + + if (detectResults.length === 0) { + const homeDir = os.homedir(); + const followDir = path.join(homeDir, ".ipfs-cluster-follow", clusterName); + + // Check for and remove the api-socket file if it exists + const apiSocketPath = path.join(followDir, "api-socket"); + if (fs.existsSync(apiSocketPath)) { + fs.unlinkSync(apiSocketPath); + results.bash = true; + } + + // Attempt to run the ipfs-cluster-follow command + const commandRun = `/usr/local/bin/ipfs-cluster-follow ${clusterName} run`; + const process = exec(commandRun, (error, stdout, stderr) => { + if (error) { + console.error(`Error running ipfs-cluster-follow: ${error.message}`); + return; + } + console.log(`ipfs-cluster-follow output: ${stdout}`); + }); + } + } catch (error) { + console.error(`Error in ipfsFollowStart: ${error.message}`); + } + + return results; + } + + ipfsFollowStop(clusterName = this.clusterName) { + let results = { systemctl: '', bash: '', 'api-socket': '' }; + + try { + // Attempt to stop the ipfs-cluster-follow service + const systemctlStop = execSync("systemctl stop ipfs-cluster-follow").toString(); + results.systemctl = systemctlStop; + } catch (error) { + results.systemctl = `Error: ${error.message}`; + } + + try { + // Forcefully kill the ipfs-cluster-follow process if it's still running + const killCommand = "ps -ef | grep ipfs-cluster-follow | grep -v grep | awk '{print $2}' | xargs kill -9"; + const killResults = execSync(killCommand).toString(); + results.bash = killResults; + } catch (error) { + results.bash = `Error: ${error.message}`; + } + + try { + // Remove the api-socket file + const apiSocketPath = path.join(os.homedir(), ".ipfs-cluster-follow", clusterName, "api-socket"); + if (fs.existsSync(apiSocketPath)) { + fs.unlinkSync(apiSocketPath); + results['api-socket'] = 'Removed api-socket'; + } else { + results['api-socket'] = 'api-socket not found'; + } + } catch (error) { + results['api-socket'] = `Error removing api-socket: ${error.message}`; + } + + return results; + } + + ipfsFollowList(clusterName = this.clusterName) { + let command = `ipfs-cluster-follow ${clusterName} list`; + + try { + let results = execSync(command, { encoding: 'utf8' }).trim(); + + if (results.length > 0) { + let resultsArray = results.split("\n"); + let resultsDict = {}; + + resultsArray.forEach((result) => { + // Replace multiple spaces with a single space + result = result.replace(/\s\s+/g, ' '); + let parts = result.split(" "); + + // Assuming the first element is the value and the second is the key + if (parts.length >= 2) { + let key = parts[1]; + let value = parts[0]; + resultsDict[key] = value; + } + }); + + return resultsDict; + } else { + return false; + } + } catch (error) { + console.error(`Error executing ipfs-cluster-follow list: ${error.message}`); + return false; + } + } + + + ipfsFollowInfo(clusterName = this.clusterName) { + let resultsDict = {}; + + try { + const command = `ipfs-cluster-follow ${clusterName} info`; + let results = execSync(command, { encoding: 'utf8' }).trim().split("\n"); + + if (results.length > 0) { + resultsDict = { + clusterName: clusterName, + configFolder: results[2].split(": ")[1], + configSource: results[3].split(": ")[1], + clusterPeerOnline: results[4].split(": ")[1], + ipfsPeerOnline: results[5].split(": ")[1], + }; + } + } catch (error) { + console.error(`Error executing ipfs-cluster-follow info: ${error.message}`); + } + + return resultsDict; + } + + ipfs_follow_run(kwargs = {}) { + let cluster_name = this.cluster_name; + if ('cluster_name' in kwargs) { + cluster_name = kwargs['cluster_name']; + } + + const command = `ipfs-cluster-follow ${cluster_name} run`; + let results = execSync(command).toString(); + results = results.split("\n"); + return results; + } + + test_ipfs_cluster_follow() { + let detect; + try { + detect = execSync('which ipfs-cluster-follow').toString(); + } catch (error) { + detect = ''; + } + return detect.length > 0; + } + +} + +if (require.main === module) { + + const meta = { + cluster_name: "test" + }; + + const thisIpfsClusterFollow = new IpfsClusterFollow(meta); + const results = thisIpfsClusterFollow.test_ipfs_cluster_follow(); + console.log(results); +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_service.js b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_service.js new file mode 100644 index 0000000..6d27124 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/ipfs_cluster_service.js @@ -0,0 +1,52 @@ + +const { execSync } = require('child_process'); + +class IpfsClusterService { + constructor(resources, meta = null) { + this.role = "leecher"; + if (meta !== null) { + if ('config' in meta && meta['config'] !== null) { + this.config = meta['config']; + } + if ('role' in meta && meta['role'] !== null) { + if (!["master", "worker", "leecher"].includes(meta['role'])) { + throw new Error("role is not either master, worker, leecher"); + } + this.role = meta['role']; + } + } + } + + test_ipfs_cluster_service() { + let detect; + try { + detect = execSync('which ipfs-cluster-service').toString(); + } catch (error) { + detect = ''; + } + return detect.length > 0; + } + + ipfs_cluster_service_start() { + const command = "systemctl start ipfs-cluster-service"; + const results = execSync(command).toString(); + return results; + } + + ipfs_cluster_service_stop() { + const command = "systemctl stop ipfs-cluster-service"; + const results = execSync(command).toString(); + return results; + } + + ipfs_cluster_service_status() { + const command = "ipfs-cluster-service status"; + const results = execSync(command).toString(); + return results; + } +} +if (require.main === module) { + const thisIpfsClusterService = new IpfsClusterService(); + const results = thisIpfsClusterService.test_ipfs_cluster_service(); + console.log(results); +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/ipget.js b/huggingface_scraper/ipfs_kit_lib/ipget.js new file mode 100644 index 0000000..d8bbfeb --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/ipget.js @@ -0,0 +1,94 @@ +const { execSync } = require('child_process'); + +class ipget { + constructor(resources, meta = null) { + if (meta !== null) { + if ('config' in meta) { + if (meta['config'] !== null) { + this.config = meta['config']; + } + } + if ('role' in meta) { + if (meta['role'] !== null) { + this.role = meta['role']; + if (!["master", "worker", "leecher"].includes(this.role)) { + throw new Error("role is not either master, worker, leecher"); + } else { + this.role = "leecher"; + } + } + } + if ('cluster_name' in meta) { + if (meta['cluster_name'] !== null) { + this.cluster_name = meta['cluster_name']; + } + } + if ('ipfs_path' in meta) { + if (meta['ipfs_path'] !== null) { + this.ipfs_path = meta['ipfs_path']; + } + } + if (this.role === "leecher" || this.role === "worker" || this.role === "master") { + // pass + } + } + } + + + async ipget_download_object(kwargs = {}) { + // NOTE: Make sure this function can download both files and folders + if (!kwargs.cid) { + throw new Error("cid not found in kwargs"); + } + if (!kwargs.path) { + throw new Error("path not found in kwargs"); + } + if (fs.existsSync(kwargs.path)) { + // pass + } + //check if folder exists + if (!fs.existsSync(path.dirname(kwargs.path))) { + fs.mkdirSync(path.dirname(kwargs.path), { recursive: true }); + } + + const command = `export IPFS_PATH=${this.ipfs_path} && ipfs get ${kwargs.cid} -o ${kwargs.path}`; + const process = exec(command); + + const start_time = Date.now(); + const timeout = 5000; // 5 seconds + + return new Promise((resolve, reject) => { + process.on('exit', (code, signal) => { + if (signal) { + reject(new Error("Command timed out")); + } else { + const stats = fs.statSync(kwargs.path); + const metadata = { + "cid": kwargs.cid, + "path": kwargs.path, + "mtime": stats.mtimeMs, + "filesize": stats.size + }; + resolve(metadata); + } + }); + + setTimeout(() => { + process.kill(); + }, timeout); + }); + } + + async test_ipget() { + try { + execSync('which ipget'); + const ipget_download_object = await this.ipget_download_object({ + cid: "QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1", + path: "/tmp/test" + }); + return true; + } catch (error) { + return false; + } + } +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/peerstore b/huggingface_scraper/ipfs_kit_lib/peerstore new file mode 100755 index 0000000..40337bb --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/peerstore @@ -0,0 +1,28 @@ +/ip4/172.29.29.10/tcp/9096/p2p/12D3KooWNJN6azoq29bY4J3GjE8xQHdYZeQ72Ga6cXnnQ11Jx8fP +/ip4/192.168.0.20/tcp/57468/p2p/12D3KooWNJN6azoq29bY4J3GjE8xQHdYZeQ72Ga6cXnnQ11Jx8fP +/ip4/97.120.209.166/tcp/18100/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea/p2p-circuit/p2p/12D3KooWNJN6azoq29bY4J3GjE8xQHdYZeQ72Ga6cXnnQ11Jx8fP +/ip4/97.120.209.166/tcp/28143/p2p/12D3KooWECihD8h6TooNoqJAVFDsP5MgUiVcy7XYRRmkFM3yyYME/p2p-circuit/p2p/12D3KooWNJN6azoq29bY4J3GjE8xQHdYZeQ72Ga6cXnnQ11Jx8fP +/ip4/97.120.209.166/tcp/38053/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea/p2p-circuit/p2p/12D3KooWNJN6azoq29bY4J3GjE8xQHdYZeQ72Ga6cXnnQ11Jx8fP +/ip4/10.11.0.1/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/10.120.0.2/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/10.46.0.5/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/127.0.0.1/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/172.17.0.1/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu +/ip4/10.11.0.1/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/10.120.0.2/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/10.46.0.5/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/127.0.0.1/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/172.17.0.1/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv +/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv/p2p-circuit/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea +/ip4/25.18.152.214/tcp/9096/p2p/12D3KooWECihD8h6TooNoqJAVFDsP5MgUiVcy7XYRRmkFM3yyYME/p2p-circuit/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea +/ip4/97.120.166.109/tcp/33661/p2p/12D3KooWECihD8h6TooNoqJAVFDsP5MgUiVcy7XYRRmkFM3yyYME/p2p-circuit/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea +/ip4/97.120.209.166/tcp/18100/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea +/ip4/97.120.209.166/tcp/38053/p2p/12D3KooWJ6mj5yii47Hedtfajahmcq1jhU1CmycvKoKoRFWyY4Ea +/ip4/10.11.0.1/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV +/ip4/10.120.0.2/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV +/ip4/10.46.0.5/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV +/ip4/127.0.0.1/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV +/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV +/ip4/172.17.0.1/tcp/9096/p2p/12D3KooWFHz8Ze2LyrkkL7q3AqMU6TASaYcW2nmzpYwQodsq2SCV diff --git a/huggingface_scraper/ipfs_kit_lib/service.json b/huggingface_scraper/ipfs_kit_lib/service.json new file mode 100755 index 0000000..91b01b7 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/service.json @@ -0,0 +1,261 @@ +{ + "cluster": { + "peername": "worker-1", + "secret": "96d5952479d0a2f9fbf55076e5ee04802f15ae5452b5faafc98e2bd48cf564d3", + "leave_on_shutdown": false, + "listen_multiaddress": [ + "/ip4/0.0.0.0/tcp/9096", + "/ip4/0.0.0.0/udp/9096/quic" + ], + "enable_relay_hop": true, + "connection_manager": { + "high_water": 400, + "low_water": 100, + "grace_period": "2m0s" + }, + "dial_peer_timeout": "3s", + "state_sync_interval": "5m0s", + "pin_recover_interval": "12m0s", + "replication_factor_min": -1, + "replication_factor_max": -1, + "monitor_ping_interval": "15s", + "peer_watch_interval": "5s", + "mdns_interval": "10s", + "pin_only_on_trusted_peers": false, + "pin_only_on_untrusted_peers": false, + "disable_repinning": true, + "peer_addresses": [] + }, + "consensus": { + "crdt": { + "cluster_name": "ipfs-cluster", + "trusted_peers": [ + "*" + ], + "batching": { + "max_batch_size": 0, + "max_batch_age": "0s" + }, + "repair_interval": "1h0m0s" + } + }, + "api": { + "ipfsproxy": { + "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095", + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "log_file": "", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "1m0s", + "max_header_bytes": 4096 + }, + "pinsvcapi": { + "http_listen_multiaddress": "/ip4/127.0.0.1/tcp/9097", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + }, + "restapi": { + "http_listen_multiaddress": "/ip4/127.0.0.1/tcp/9094", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + } + }, + "ipfs_connector": { + "ipfshttp": { + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "connect_swarms_delay": "30s", + "ipfs_request_timeout": "5m0s", + "pin_timeout": "2m0s", + "unpin_timeout": "3h0m0s", + "repogc_timeout": "24h0m0s", + "informer_trigger_interval": 0 + } + }, + "pin_tracker": { + "stateless": { + "concurrent_pins": 10, + "priority_pin_max_age": "24h0m0s", + "priority_pin_max_retries": 5 + } + }, + "monitor": { + "pubsubmon": { + "check_interval": "15s" + } + }, + "allocator": { + "balanced": { + "allocate_by": [ + "tag:group", + "freespace" + ] + } + }, + "informer": { + "disk": { + "metric_ttl": "30s", + "metric_type": "freespace" + }, + "pinqueue": { + "metric_ttl": "30s", + "weight_bucket_size": 100000 + }, + "tags": { + "metric_ttl": "30s", + "tags": { + "group": "default" + } + } + }, + "observations": { + "metrics": { + "enable_stats": false, + "prometheus_endpoint": "/ip4/127.0.0.1/tcp/8888", + "reporting_interval": "2s" + }, + "tracing": { + "enable_tracing": false, + "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831", + "sampling_prob": 0.3, + "service_name": "cluster-daemon" + } + }, + "datastore": { + "pebble": { + "pebble_options": { + "cache_size_bytes": 1073741824, + "bytes_per_sync": 1048576, + "disable_wal": false, + "flush_delay_delete_range": 0, + "flush_delay_range_key": 0, + "flush_split_bytes": 4194304, + "format_major_version": 1, + "l0_compaction_file_threshold": 750, + "l0_compaction_threshold": 4, + "l0_stop_writes_threshold": 12, + "l_base_max_bytes": 134217728, + "max_open_files": 1000, + "mem_table_size": 67108864, + "mem_table_stop_writes_threshold": 20, + "read_only": false, + "wal_bytes_per_sync": 0, + "levels": [ + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 4194304 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 8388608 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 16777216 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 33554432 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 67108864 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 134217728 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 268435456 + } + ], + "max_concurrent_compactions": 5 + } + } + } +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/service_follower.json b/huggingface_scraper/ipfs_kit_lib/service_follower.json new file mode 100644 index 0000000..7e24995 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/service_follower.json @@ -0,0 +1,261 @@ +{ + "cluster": { + "peername": "worker", + "secret": "96d5952479d0a2f9fbf55076e5ee04802f15ae5452b5faafc98e2bd48cf564d3", + "leave_on_shutdown": false, + "listen_multiaddress": [ + "/ip4/0.0.0.0/tcp/9096", + "/ip4/0.0.0.0/udp/9096/quic" + ], + "enable_relay_hop": true, + "connection_manager": { + "high_water": 400, + "low_water": 100, + "grace_period": "2m0s" + }, + "dial_peer_timeout": "3s", + "state_sync_interval": "5m0s", + "pin_recover_interval": "12m0s", + "replication_factor_min": -1, + "replication_factor_max": -1, + "monitor_ping_interval": "15s", + "peer_watch_interval": "5s", + "mdns_interval": "10s", + "pin_only_on_trusted_peers": false, + "pin_only_on_untrusted_peers": false, + "disable_repinning": true, + "peer_addresses": [] + }, + "consensus": { + "crdt": { + "cluster_name": "ipfs-cluster", + "trusted_peers": [ + "*" + ], + "batching": { + "max_batch_size": 0, + "max_batch_age": "0s" + }, + "repair_interval": "1h0m0s" + } + }, + "api": { + "ipfsproxy": { + "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095", + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "log_file": "", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "1m0s", + "max_header_bytes": 4096 + }, + "pinsvcapi": { + "http_listen_multiaddress": "/ip4/127.0.0.1/tcp/9097", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + }, + "restapi": { + "http_listen_multiaddress": "/ip4/127.0.0.1/tcp/9094", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + } + }, + "ipfs_connector": { + "ipfshttp": { + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "connect_swarms_delay": "30s", + "ipfs_request_timeout": "5m0s", + "pin_timeout": "2m0s", + "unpin_timeout": "3h0m0s", + "repogc_timeout": "24h0m0s", + "informer_trigger_interval": 0 + } + }, + "pin_tracker": { + "stateless": { + "concurrent_pins": 10, + "priority_pin_max_age": "24h0m0s", + "priority_pin_max_retries": 5 + } + }, + "monitor": { + "pubsubmon": { + "check_interval": "15s" + } + }, + "allocator": { + "balanced": { + "allocate_by": [ + "tag:group", + "freespace" + ] + } + }, + "informer": { + "disk": { + "metric_ttl": "30s", + "metric_type": "freespace" + }, + "pinqueue": { + "metric_ttl": "30s", + "weight_bucket_size": 100000 + }, + "tags": { + "metric_ttl": "30s", + "tags": { + "group": "default" + } + } + }, + "observations": { + "metrics": { + "enable_stats": false, + "prometheus_endpoint": "/ip4/127.0.0.1/tcp/8888", + "reporting_interval": "2s" + }, + "tracing": { + "enable_tracing": false, + "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831", + "sampling_prob": 0.3, + "service_name": "cluster-daemon" + } + }, + "datastore": { + "pebble": { + "pebble_options": { + "cache_size_bytes": 1073741824, + "bytes_per_sync": 1048576, + "disable_wal": false, + "flush_delay_delete_range": 0, + "flush_delay_range_key": 0, + "flush_split_bytes": 4194304, + "format_major_version": 1, + "l0_compaction_file_threshold": 750, + "l0_compaction_threshold": 4, + "l0_stop_writes_threshold": 12, + "l_base_max_bytes": 134217728, + "max_open_files": 1000, + "mem_table_size": 67108864, + "mem_table_stop_writes_threshold": 20, + "read_only": false, + "wal_bytes_per_sync": 0, + "levels": [ + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 4194304 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 8388608 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 16777216 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 33554432 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 67108864 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 134217728 + }, + { + "block_restart_interval": 16, + "block_size": 4096, + "block_size_threshold": 90, + "compression": 2, + "filter_type": 0, + "filter_policy": 10, + "index_block_size": 4096, + "target_file_size": 268435456 + } + ], + "max_concurrent_compactions": 5 + } + } + } +} \ No newline at end of file diff --git a/huggingface_scraper/ipfs_kit_lib/text_fio.js b/huggingface_scraper/ipfs_kit_lib/text_fio.js new file mode 100644 index 0000000..dd25be2 --- /dev/null +++ b/huggingface_scraper/ipfs_kit_lib/text_fio.js @@ -0,0 +1,140 @@ +const { execSync } = require('child_process'); + +class TestFio { + constructor(resources, meta = null) { + // constructor body + } + + call(method, kwargs = {}) { + if (method === "test") { + return this.test(kwargs); + } + } + + disk_device_name_from_location(location) { + let directory_tree = location.split("/"); + + const command = "df -h"; + let df = execSync(command).toString(); + df = df.split("\n"); + for (let line of df) { + if (line.includes(location)) { + const device = line.split(" ")[0]; + return device; + } else { + while (directory_tree.length > 1) { + directory_tree.pop(); + location = directory_tree.join("/"); + for (let line of df) { + if (directory_tree.length === 1 && location === "") { + location = "/"; + } + if (line.includes(location)) { + while (line.includes(" ")) { + line = line.replace(" ", " "); + } + const mount = line.split(" "); + if (mount[5] === location) { + const device = mount[0]; + return device; + } + } + } + } + } + } + return "rootfs"; + } + + + disk_device_total_capacity(device) { + const command = "df -h"; + let df = execSync(command).toString(); + df = df.split("\n"); + for (let line of df) { + if (line.includes(device)) { + while (line.includes(" ")) { + line = line.replace(" ", " "); + } + const capacity = line.split(" ")[1]; + return capacity; + } + } + return null; + } + + disk_device_used_capacity(device) { + const command = "df -h"; + let df = execSync(command).toString(); + df = df.split("\n"); + for (let line of df) { + if (line.includes(device)) { + while (line.includes(" ")) { + line = line.replace(" ", " "); + } + const capacity = line.split(" ")[2]; + return capacity; + } + } + return null; + } + + disk_device_avail_capacity(device) { + const command = "df -h"; + let df = execSync(command).toString(); + df = df.split("\n"); + for (let line of df) { + if (line.includes(device)) { + while (line.includes(" ")) { + line = line.replace(" ", " "); + } + const capacity = line.split(" ")[3]; + return capacity; + } + } + return null; + } + + disk_speed_4k(location) { + const tempFile = tmp.fileSync({ postfix: '.iso', dir: location }); + const timestamp_0 = Date.now(); + const command = `dd if=/dev/zero of=${tempFile.name} bs=4k count=8k conv=fdatasync`; + execSync(command); + const timestamp_1 = Date.now(); + const write_speed = 32 / ((timestamp_1 - timestamp_0) / 1000); + const command2 = `dd if=${tempFile.name} of=/dev/null bs=4k`; + execSync(command2); + const timestamp_2 = Date.now(); + const read_speed = 32 / ((timestamp_2 - timestamp_1) / 1000); + fs.unlinkSync(tempFile.name); + return { read_speed, write_speed }; + } + + + stats(location, kwargs = {}) { + const disk_device = this.disk_device_name_from_location(location); + const disk_capacity = this.disk_device_total_capacity(disk_device); + const disk_used = this.disk_device_used_capacity(disk_device); + const disk_avail = this.disk_device_avail_capacity(disk_device); + const { read_speed: disk_read_speed, write_speed: disk_write_speed } = this.disk_speed_4k(location); + const results = { + disk_device, + disk_capacity, + disk_used, + disk_avail, + disk_write_speed, + disk_read_speed + }; + return results; + } + + +} + +if (require.main === module) { + const thisTest = new TestFio(null); + const results = thisTest.test("/tmp/"); + console.log(results); + console.log("Test complete"); + process.exit(0); +} \ No newline at end of file diff --git a/huggingface_scraper/main.js b/huggingface_scraper/main.js index 423b611..4c6d739 100644 --- a/huggingface_scraper/main.js +++ b/huggingface_scraper/main.js @@ -3,31 +3,36 @@ import process from 'process' import * as generate_manifest from './generate_manifest.js' export class Scraper { - constructor(s3_creds, hf_creds, mysql_creds, local_model_path, collection_path) { + constructor(s3_creds, hf_creds, mysql_creds, local_model_path, ipfs_path, collection_path) { this.env = process.env; if (s3_creds != undefined) { - this.env.s3_creds = s3_creds; + process.env.s3_creds = JSON.stringify(s3_creds); this.s3_creds = s3_creds; } if (hf_creds != undefined) { - this.env.hf_creds = hf_creds; + process.env.hf_creds = JSON.stringify(hf_creds); this.hf_creds = hf_creds; } if (mysql_creds != undefined) { - this.env.mysql_creds = mysql_creds; + process.env.mysql_creds = JSON.stringify(mysql_creds); this.mysql_creds = mysql_creds; } if (local_model_path != undefined) { - this.env.local_model_path = local_model_path; + process.env.local_model_path = local_model_path; this.local_model_path = local_model_path; } + if (ipfs_path != undefined) { + process.env.ipfs_path = ipfs_path; + this.ipfs_path = ipfs_path; + } if (collection_path != undefined) { - this.env.collection_path = collection_path; + process.env.collection_path = collection_path; this.collection_path = collection_path; } } main() { + console.log(this) let args = process.argv.slice(2); let command; let source; @@ -54,39 +59,49 @@ export class Scraper { if (command == undefined) { //console.log("No command specified try -h or --help for help"); let this_generate_manifest = new generate_manifest.Generate_Manifest(); - let this_manifest = this_generate_manifest.main(); + let this_manifest = this_generate_manifest.generate_from_prompt() + //remove keys + delete this_manifest["s3_creds"]; + delete this_manifest["hf_creds"]; + delete this_manifest["mysql_creds"]; + console.log("--this_manifest--"); + console.log(this_manifest); +// console.log("--scraper class--"); +// console.log(this) let this_process_manifest = new manifest.Manifest( - s3_creds = this.s3_creds, - hf_creds = this.hf_creds, - mysql_creds = this.mysql_creds, - local_model_path = this.local_model_path, - collection_path = this.collection_path + this.s3_creds, + this.hf_creds, + this.mysql_creds, + this.local_model_path, + this.ipfs_path, + this.collection_path ); - this_process_manifest.main(); + let processed_manifest = this_process_manifest.process_prompted_manifest(this_manifest); } - if (command == 'import' && source != "hf") { throw new Error("Only hf is supported as a source"); } if (command == "import" && source == "hf" && model == undefined) { let this_manifest = new manifest.Manifest( - s3_creds = this.s3_creds, - hf_creds = this.hf_creds, - mysql_creds = this.mysql_creds, - local_model_path = this.local_model_path, - collection_path = this.collection_path + this.s3_creds, + this.hf_creds, + this.mysql_creds, + this.local_model_path, + this.ipfs_path, + this.collection_path ); this_manifest.import_from_hf(); } if (command == "import" && source == "hf" && model != undefined) { let this_manifest = new manifest.Manifest( - s3_creds = this.s3_creds, - hf_creds = this.hf_creds, - mysql_creds = this.mysql_creds, - local_model_path = this.local_model_path, - collection_path = this.collection_path + this.s3_creds, + this.hf_creds, + this.mysql_creds, + this.local_model_path, + this.ipfs_path, + this.collection_path ); this_manifest.import_from_hf(model); } diff --git a/huggingface_scraper/manifest.js b/huggingface_scraper/manifest.js index c7713ec..3429296 100644 --- a/huggingface_scraper/manifest.js +++ b/huggingface_scraper/manifest.js @@ -16,11 +16,12 @@ import {complete, parse_templates, generate_test} from './utils.js' import process from 'process' export class Manifest{ - constructor(s3_creds, hf_creds, mysql_creds, local_model_path, collection_path){ + constructor(s3_creds, hf_creds, mysql_creds, local_model_path, ipfs_path, collection_path){ this.id = "" this.format = "" this.hwRequirements = {} this.metadata = {} + this.env = process.env if (s3_creds != undefined){ this.env.s3_creds = s3_creds this.s3_creds = s3_creds @@ -33,6 +34,10 @@ export class Manifest{ this.env.mysql_creds = mysql_creds this.mysql_creds = mysql_creds } + if (ipfs_path != undefined){ + this.env.ipfs_path = ipfs_path + this.ipfs_path = ipfs_path + } if (local_model_path != undefined){ this.env.local_model_path = local_model_path this.local_model_path = local_model_path @@ -43,13 +48,26 @@ export class Manifest{ } } - main(){ - let self = this - let generation = generate_manifest.main(generate) - let manifest = generation.manifest - let folder = generation.folder - let generate = generation.generate - let processing = new process_manifest.main(manifest, folder, generate) + main(generated_manifest){ + // depricated for the time being + } + + process_prompted_manifest(generated_manifest){ + let folder = path.join(this.local_model_path, generated_manifest["id"]) + console.log("manifest.js") + console.log("process_generated_manifest(generate)") + console.log(generated_manifest) + console.log("folder") + console.log(folder) + let this_process_manifest = new process_manifest.process_manifest( + this.s3_creds, + this.hf_creds, + this.mysql_creds, + this.local_model_path, + this.ipfs_path, + this.collection_path + ) + let processing = this_process_manifest.process_prompted_manifest(generated_manifest, folder) return processing } @@ -62,31 +80,31 @@ export class Manifest{ manifest_from_generator(this_generator){ let generate = this_generator if (generate.skill == "hf_transformers"){ - return hf_transformers_generate(generate) + return manifest_hf_transformers.hf_transformers_generate(generate) } if (generate.skill == "hf_embed"){ - return hf_embed_generate(generate) + return manifest_hf_embed.hf_embed_generate(generate) } if (generate.skill == "llama_cpp"){ - return manifest_llama_cpp(generate) + return manifest_llama_cpp.llama_cpp_generate(generate) } if (generate.skill == "diffusion"){ - return diffusion_generate(generate) + return manifest_diffusion.diffusion_generate(generate) } if (generate.skill == "knn"){ - return knn_generate(generate) + return manifest_knn.knn_generate(generate) } if (generate.skill == "hf_lm"){ - return hf_lm_generate(generate) + return manifest_hf_lm.hf_lm_generate(generate) } if (generate.skill == "hf_t5"){ - return hf_t5_generate(generate) + return manifest_hf_t5.hf_t5_generate(generate) } if (generate.skill == "api"){ - return api_generate(generate) + return manifest_api.api_generate(generate) } if (generate.skill == "custom"){ - return custom_generate(generate) + return manifest_custom.custom_generate(generate) } } diff --git a/huggingface_scraper/manifests/manifest_api.js b/huggingface_scraper/manifests/manifest_api.js index bf07c96..62c39a9 100644 --- a/huggingface_scraper/manifests/manifest_api.js +++ b/huggingface_scraper/manifests/manifest_api.js @@ -1,6 +1,7 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' +import models_generate_api from '../modeldata/generate_api.json' assert { type: 'json' }; export class Manifest_api{ constructor(){ @@ -15,21 +16,19 @@ export class Manifest_api{ } main(generate){ - let self = this let generation = api_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return api_calc_calc(self) + calc(){ + return api_calc_calc() } } -export default function api_calc(self){ - +export default function api_calc(){ let providers = ["openai","huggingface","custom"] let provider = multiple_choice_question("Select a provider: ", providers) @@ -78,3 +77,14 @@ export function api_generate(generate){ results.skill = "api" return results } + +export function api_add(generation){ + if (generation.modelName != undefined){ + models_generate_api[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_api.json'), JSON.stringify(models_generate_api, null, 2)) + return Object.keys(models_generate_api) + } + else{ + throw "model name is undefined" + } +} \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_diffusion.js b/huggingface_scraper/manifests/manifest_diffusion.js index a25ce1b..7aadb45 100644 --- a/huggingface_scraper/manifests/manifest_diffusion.js +++ b/huggingface_scraper/manifests/manifest_diffusion.js @@ -1,6 +1,7 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' +import models_generate_diffusion from '../modeldata/generate_diffusion.json' assert { type: 'json' }; export class Manifest_diffusion{ constructor(){ @@ -15,20 +16,19 @@ export class Manifest_diffusion{ } main(generate){ - let self = this let generation = diffusion_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return diffusion_calc(self) + calc(){ + return diffusion_calc() } } -export default function diffusion_calc(self){ +export default function diffusion_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -279,4 +279,15 @@ export function diffusion_generate(generate){ results.metadata = diffusion_generate_metadata(generate) results.skill = "diffusion" return results +} + +export function diffusion_add(generation){ + if (generation.modelName != undefined){ + models_generate_diffusion[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_diffusion.json'), JSON.stringify(models_generate_diffusion, null, 2)) + return Object.keys(models_generate_diffusion) + } + else{ + throw "model name is undefined" + } } \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_hf_embed.js b/huggingface_scraper/manifests/manifest_hf_embed.js index 73c1a29..8289fdd 100644 --- a/huggingface_scraper/manifests/manifest_hf_embed.js +++ b/huggingface_scraper/manifests/manifest_hf_embed.js @@ -1,6 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' +import models_generate_hf_embed from '../modeldata/generate_hf_embed.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_hf_embed{ constructor(){ @@ -14,21 +17,22 @@ export class Manifest_hf_embed{ } main(generate){ - let self = this let generation = hf_embed_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return hf_embed_calc(self) + calc(){ + return hf_embed_calc() } } -export default function hf_embed_calc(self){ + + +export default function hf_embed_calc(){ let model_name = open_ended_question("Enter a model name: ") @@ -59,21 +63,19 @@ export default function hf_embed_calc(self){ let contextSize = multiple_choice_question("Enter a the context size length: ", contextSize_options) - let dimensions_options = [128,256,512,1024,2048] + let dimensions_options = [128,256,512,1024,2048,4096] let dimensions = multiple_choice_question("how many dimensions are there?", dimensions_options) let model_size_options = [] - let model_size = open_ended_question("What is the model size in GB? ") - let embedding_template_options = ['embed', "instruct-embed"] let embedding_template = multiple_choice_question("Select default prompt template: ", embedding_template_options) let content_type_options = ['text', 'image', 'audio', 'video'] - let content_type = open_ended_question("Enter the content type: ", content_type_options) + let content_type = multiple_choice_question("Enter the content type: ", content_type_options) let generate = {} generate.parameters = parameters @@ -82,11 +84,10 @@ export default function hf_embed_calc(self){ generate.dimensions = dimensions generate.embedding_template = embedding_template generate.content_type = content_type - generate.model_size = model_size generate.format = format generate.location = location generate.source = source - generate.modelName = modelName + generate.modelName = model_name let results = hf_embed_generate(generate) return results } @@ -107,6 +108,8 @@ export function hf_embed_generate_metadata(generate){ } export function hf_embed_generate_hwrequirements(generate){ + console.log("generate") + console.log(generate) let results = generate_hwrequirements_template(generate) let flopsPerUnit let tokensPerSecond @@ -181,8 +184,18 @@ export function hf_embed_generate_hwrequirements(generate){ results.gpuCount = gpuCount results.cpuCount = cpuCount results.flopsPerUnit = flopsPerUnit - results.minFlops = minFlops - results.minSpeed = results.minFlops.fp16 / 35.58 + if (Object.keys(minFlops).length != 0){ + results.minFlops = minFlops + } + else{ + throw "minFlops is not defined" + } + if (generate.format == "fp16"){ + results.minSpeed = results.minFlops["fp16"] / 35.58 + } + else{ + results.minSpeed = results.minFlops["fp32"] / 35.58 + } results["cpuMemory"] = generate.parameters * 2 * model_padding results["gpuMemory"] = generate.parameters * 2 * model_padding results["diskUsage"] = results["gpuMemory"] * model_padding @@ -196,4 +209,15 @@ export function hf_embed_generate(generate){ results.id = generate.modelName results.skill = "hf_embed" return results +} + +export function hf_embed_add(generation){ + if (generation.modelName != undefined){ + models_generate_hf_embed[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_hf_embed.json'), JSON.stringify(models_generate_hf_embed, null, 2)) + return Object.keys(models_generate_hf_embed) + } + else{ + throw "model name is undefined" + } } \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_hf_faster_whisper.js b/huggingface_scraper/manifests/manifest_hf_faster_whisper.js index 78197bd..da378ed 100644 --- a/huggingface_scraper/manifests/manifest_hf_faster_whisper.js +++ b/huggingface_scraper/manifests/manifest_hf_faster_whisper.js @@ -1,6 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' +import models_generate_hf_faster_whisper from '../modeldata/generate_hf_faster_whisper.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_hf_faster_whisper{ constructor(){ @@ -14,21 +17,20 @@ export class Manifest_hf_faster_whisper{ } main(generate){ - let self = this let generation = hf_faster_whisper_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return hf_faster_whisper_calc(self) + calc(){ + return hf_faster_whisper_calc() } } -export default function hf_faster_whisper_calc(self){ +export default function hf_faster_whisper_calc(){ let model_name = open_ended_question("Enter a model name: ") @@ -181,4 +183,15 @@ export function hf_faster_whisper_generate(generate){ results.id = generate.modelName results.skill = "hf_faster_whisper" return results +} + +export function hf_faster_whisper_add(generation){ + if (generation.modelName != undefined){ + models_generate_hf_faster_whisper[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_hf_faster_whisper.json'), JSON.stringify(models_generate_hf_faster_whisper, null, 2)) + return Object.keys(models_generate_hf_faster_whisper) + } + else{ + throw "model name is undefined" + } } \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_hf_lm.js b/huggingface_scraper/manifests/manifest_hf_lm.js index 0bee9cf..71b6514 100644 --- a/huggingface_scraper/manifests/manifest_hf_lm.js +++ b/huggingface_scraper/manifests/manifest_hf_lm.js @@ -1,7 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' - +import models_generate_hf_lm from '../modeldata/generate_hf_lm.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_hf_lm{ constructor(){ @@ -16,22 +18,19 @@ export class Manifest_hf_lm{ } main(generate){ - let self = this let generation = hf_lm_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return hf_lm_calc(self) + calc(){ + return hf_lm_calc() } } - -export default function hf_lm_calc(self){ - +export default function hf_lm_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -258,3 +257,14 @@ export function hf_lm_generate_hwrequirements(generate){ results["diskUsage"] = results["gpuMemory"] * model_padding return results } + +export function hf_lm_add(generation){ + if (generation.modelName != undefined){ + models_generate_hf_lm[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_hf_lm.json'), JSON.stringify(models_generate_hf_lm, null, 2)) + return Object.keys(models_generate_hf_lm) + } + else{ + throw "model name is undefined" + } +} \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_hf_t5.js b/huggingface_scraper/manifests/manifest_hf_t5.js index 52658af..4f21ce1 100644 --- a/huggingface_scraper/manifests/manifest_hf_t5.js +++ b/huggingface_scraper/manifests/manifest_hf_t5.js @@ -1,7 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' - +import models_generate_hf_t5 from '../modeldata/generate_hf_t5.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_hf_t5{ constructor(){ @@ -16,21 +18,20 @@ export class Manifest_hf_t5{ } main(generate){ - let self = this let generation = hf_t5_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return hf_t5_calc(self) + calc(){ + return hf_t5_calc() } } -export default function hf_t5_calc(self){ +export default function hf_t5_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -229,3 +230,14 @@ export function hf_t5_generate_hwrequirements(generate){ return results } + +export function hf_t5_add(generation){ + if (generation.modelName != undefined){ + models_generate_hf_t5[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_hf_transformers.json'), JSON.stringify(models_generate_hf_t5, null, 2)) + return Object.keys(models_generate_hf_t5) + } + else{ + throw "model name is undefined" + } +} \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_hf_transformers.js b/huggingface_scraper/manifests/manifest_hf_transformers.js index 0119148..4c11f9f 100644 --- a/huggingface_scraper/manifests/manifest_hf_transformers.js +++ b/huggingface_scraper/manifests/manifest_hf_transformers.js @@ -1,7 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' - +import models_generate_hf_transformers from '../modeldata/generate_hf_transformers.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_hf_transformers{ constructor(){ @@ -16,21 +18,20 @@ export class Manifest_hf_transformers{ } main(generate){ - let self = this let generation = hf_transformers_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return hf_transformers_calc(self) + calc(){ + return hf_transformers_calc() } } -export default function hf_transformers_calc(self){ +export default function hf_transformers_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -216,3 +217,14 @@ export function hf_transformers_generate_hwrequirements(generate){ return results } + +export function hf_transformers_add(generation){ + if (generation.modelName != undefined){ + models_generate_hf_transformers[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_hf_transformers.json'), JSON.stringify(models_generate_hf_transformers, null, 2)) + return Object.keys(models_generate_hf_transformers) + } + else{ + throw "model name is undefined" + } +} \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_knn.js b/huggingface_scraper/manifests/manifest_knn.js index 26a61d0..ceba1e6 100644 --- a/huggingface_scraper/manifests/manifest_knn.js +++ b/huggingface_scraper/manifests/manifest_knn.js @@ -1,7 +1,7 @@ import {complete, open_ended_question, multiple_choice_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' - +import models_generate_knn from '../modeldata/generate_knn.json' assert { type: 'json' }; export class Manifest_knn{ @@ -16,20 +16,19 @@ export class Manifest_knn{ } main(generate){ - let self = this let generation = knn_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return knn_calc(self) + calc(){ + return knn_calc() } } -export default function knn_calc(self){ +export default function knn_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -196,4 +195,15 @@ export function knn_generate(generate){ results.skill = "knn" results.id = "knn-" + generate.modelName + "-" + generate.samples + "-" + generate.dimensions + "-" + generate.quantization return results +} + +export function knn_add(generation){ + if (generation.modelName != undefined){ + models_generate_knn[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_knn.json'), JSON.stringify(models_generate_knn, null, 2)) + return Object.keys(models_generate_knn) + } + else{ + throw "model name is undefined" + } } \ No newline at end of file diff --git a/huggingface_scraper/manifests/manifest_llama_cpp.js b/huggingface_scraper/manifests/manifest_llama_cpp.js index c77dfde..b18e23e 100644 --- a/huggingface_scraper/manifests/manifest_llama_cpp.js +++ b/huggingface_scraper/manifests/manifest_llama_cpp.js @@ -1,6 +1,9 @@ import {complete, open_ended_question, multiple_choice_question, multiple_select_question, parse_templates, generate_template, generate_metadata_template, generate_hwrequirements_template} from '../utils.js' import prompt_sync from 'prompt-sync' import prompt_sync_history from 'prompt-sync-history' +import models_llama_cpp_generate from '../modeldata/generate_llama_cpp.json' assert { type: 'json' }; +import fs from 'fs' +import path, { parse } from 'path' export class Manifest_llama_cpp{ constructor(){ @@ -14,20 +17,19 @@ export class Manifest_llama_cpp{ } main(generate){ - let self = this let generation = llama_cpp_generate(generate) for (var key in generation){ - self[key] = generation[key] + this[key] = generation[key] } - return self + return this } - calc(self){ - return llama_cpp_calc(self) + calc(){ + return llama_cpp_calc() } } -export default function llama_cpp_calc(self){ +export default function llama_cpp_calc(){ let prompt = prompt_sync(({ history: prompt_sync_history(), @@ -858,4 +860,15 @@ export function llama_cpp_generate(generate){ results.hwRequirements = llama_cpp_generate_hw_requirements(generate) results.skill = "llama_cpp" return results +} + +export function llama_cpp_add(generation){ + if (generation.modelName != undefined){ + models_llama_cpp_generate[generation.modelName] = generation + fs.writeFileSync(path.resolve('../modeldata/generate_llama_cpp.json'), JSON.stringify(models_llama_cpp_generate, null, 2)) + return Object.keys(models_llama_cpp_generate) + } + else{ + throw "model name is undefined" + } } \ No newline at end of file diff --git a/huggingface_scraper/model_manager.js b/huggingface_scraper/model_manager.js new file mode 100644 index 0000000..54e9455 --- /dev/null +++ b/huggingface_scraper/model_manager.js @@ -0,0 +1,1488 @@ +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const util = require('util'); +const exec = util.promisify(require('child_process').exec); +const AWS = require('aws-sdk'); +const s3 = new AWS.S3(); +const ipfsClient = require('ipfs-http-client'); +const ipfs = ipfsClient('http://localhost:5001'); +const fs = require('fs'); +const crypto = require('crypto'); +const path = require('path'); +const util = require('util'); +const readFile = util.promisify(fs.readFile); +const writeFile = util.promisify(fs.writeFile); +const stat = util.promisify(fs.stat); +const moveFile = util.promisify(fs.rename); +const rimraf = util.promisify(require('rimraf')); +const _ = require('lodash'); + +class ModelManager { + constructor(resources = null, meta = null) { + let localPath = '/cloudkit_storage/'; + this.models = { + "s3_models": [], + "ipfs_models": [], + "local_models": [], + "https_models": [] + }; + this.ipfsCollection = {}; + this.s3Collection = {}; + this.localCollection = {}; + this.httpsCollection = {}; + this.pinned = []; + this.fastest = null; + this.bandwidth = null; + this.thisModelPath = null; + this.thisModel = null; + this.thisModelName = null; + this.s3cfg = null; + if (meta !== null && typeof meta === 'object') { + this.s3cfg = meta.s3cfg || null; + this.ipfsSrc = meta.ipfs_src || null; + this.timing = meta.timing || null; + this.collectionCache = meta.cache || null; + this.modelHistory = meta.history || null; + this.role = meta.role || null; + this.clusterName = meta.cluster_name || null; + this.localPath = meta.local_path || (this.ipfsPath + "cloudkit-models/"); + this.s3cfg = meta.s3_cfg || null; + this.ipfsPath = meta.ipfs_path || (this.localPath + "ipfs/"); + } else { + this.localPath = this.ipfsPath + "cloudkit-models/"; + this.ipfsPath = "/ipfs/"; + this.s3cfg = null; + this.role = "leecher"; + this.clusterName = "cloudkit_storage"; + this.cache = { + "local": "/storage/cloudkit-models/collection.json", + "s3": "s3://huggingface-models/collection.json", + "ipfs": "QmXBUkLywjKGTWNDMgxknk6FJEYu9fZaEepv3djmnEqEqD", + "https": "https://huggingface.co/endomorphosis/cloudkit-collection/resolve/main/collection.json" + }; + meta = { + "local_path": this.localPath, + "ipfs_path": this.ipfsPath, + "s3_cfg": this.s3cfg, + "role": this.role, + "cluster_name": this.clusterName, + "cache": this.cache, + }; + } + + let homeDir = os.homedir(); + let homeDirFiles = fs.readdirSync(homeDir); + this.testFio = new TestFio(null); + this.s3Kit = new S3Kit(resources, meta); + this.ipfsKit = new IpfsKit(resources, meta); + this.installIpfs = new InstallIpfs(resources, meta); + let ipfsPath = this.ipfsPath; + if (!fs.existsSync(this.ipfsPath)) { + fs.mkdirSync(this.ipfsPath, { recursive: true }); + } + if (!fs.existsSync(this.localPath)) { + fs.mkdirSync(this.localPath, { recursive: true }); + } + let ipfsPathFiles = fs.readdirSync(ipfsPath); + if (!homeDirFiles.includes('.ipfs') && !ipfsPathFiles.includes('ipfs') && fs.existsSync(ipfsPath)) { + this.installIpfs.installIpfsDaemon(); + this.installIpfs.installIpget(); + let stats = this.testFio.stats(this.ipfsPath); + this.installIpfs.configIpfs({ + diskStats: stats, + ipfsPath: this.ipfsPath, + }); + } else if (this.role === "master" && !homeDirFiles.includes('.ipfs-cluster-service')) { + this.installIpfs.installIpfsClusterService(); + this.installIpfs.installIpfsClusterCtl(); + this.installIpfs.configIpfsClusterService(); + this.installIpfs.configIpfsClusterCtl(); + } else if (this.role === "worker" && !homeDirFiles.includes('.ipfs-cluster-follow')) { + this.installIpfs.installIpfsClusterService(); + this.installIpfs.installIpfsClusterFollow(); + this.installIpfs.configIpfsClusterService(); + this.installIpfs.configIpfsClusterFollow(); + } + + this.ipfsKit.ipfsKitStop(); + this.ipfsKit.ipfsKitStart(); + let executeReady = false; + while (!executeReady) { + try { + let readyIpfsKit = this.ipfsKit.ipfsKitReady(); + executeReady = readyIpfsKit; + } catch (e) { + executeReady = e.toString(); + } + } + + this.models = {}; + this.lastUpdate = 0.1; + this.historyModels = {}; + this.pinnedModels = {}; + this.collection = {}; + this.collectionPins = []; + this.zombies = {}; + this.expired = {}; + this.notFound = []; + this.ipfsPinset = { + "ipfs": {}, + "ipfs_cluster": {}, + }; + } + + call(method, kwargs) { + switch (method) { + case "load_collection": + return this.loadCollection(kwargs); + case "download_model": + return this.downloadModel(kwargs); + case "load_collection_cache": + return this.loadCollectionCache(kwargs); + case "auto_download": + return this.autoDownload(kwargs); + case "ls_models": + return this.lsModels(kwargs); + case "ls_s3_models": + return this.lsS3Models(kwargs); + case "check_local": + return this.checkLocal(kwargs); + case "check_https": + return this.checkHttps(kwargs); + case "check_s3": + return this.checkS3(kwargs); + case "check_ipfs": + return this.checkIpfs(kwargs); + case "download_https": + return this.downloadHttps(kwargs); + case "download_s3": + return this.downloadS3(kwargs); + case "download_ipfs": + return this.downloadIpfs(kwargs); + case "test": + return this.test(kwargs); + default: + throw new Error(`Method ${method} not found`); + } + } + + async loadCollection(kwargs) { + try { + this.httpsCollection = await this.downloadHttps('https://huggingface.co/endomorphosis/cloudkit-collection/resolve/main/collection.json', "/tmp/"); + this.httpsCollection = JSON.parse(fs.readFileSync(this.httpsCollection, 'utf8')); + } catch (e) { + this.httpsCollection = e; + } + + try { + let thisTempFile = tmp.fileSync({ postfix: '.json', dir: '/tmp' }); + let results = await this.ipfsKit.ipfsGet(this.ipfsSrc, thisTempFile.name); + if (results && results.length > 0) { + this.ipfsCollection = JSON.parse(fs.readFileSync(thisTempFile.name, 'utf8')); + } else { + this.ipfsCollection = { "error": "no results" }; + } + } catch (e) { + this.ipfsCollection = { "error": e.toString() }; + } + + try { + let thisTempFile = tmp.fileSync({ postfix: '.json', dir: '/tmp' }); + await this.s3Kit.s3DlFile('collection.json', thisTempFile.name, this.s3cfg["bucket"]); + this.s3Collection = JSON.parse(fs.readFileSync(thisTempFile.name, 'utf8')); + } catch (e) { + this.s3Collection = e; + } + + if (fs.existsSync(path.join(this.ipfsPath, "collection.json"))) { + this.localCollection = JSON.parse(fs.readFileSync(path.join(this.ipfsPath, "collection.json"), 'utf8')); + } + + let ipfsStop, ipfsStart; + try { + ipfsStop = await this.ipfsKit.ipfsKitStop(); + } catch (e) { + ipfsStop = e; + } + + try { + ipfsStart = await this.ipfsKit.ipfsKitStart(); + } catch (e) { + ipfsStart = e; + } + + return { + "ipfs_stop": ipfsStop, + "ipfs_start": ipfsStart, + "ipfs_collection": this.ipfsCollection, + "s3_collection": this.s3Collection, + "local_collection": this.localCollection, + "https_collection": this.httpsCollection + }; + } + + async downloadHttps(httpsSrc, modelPath, kwargs) { + let suffix = "." + httpsSrc.split("/").pop().split(".").pop(); + let dstPath, filename, dirname; + + if (fs.existsSync(modelPath)) { + if (fs.lstatSync(modelPath).isDirectory()) { + filename = httpsSrc.split("/").pop(); + dstPath = path.join(modelPath, filename); + } else { + filename = httpsSrc.split("/").pop(); + dirname = path.dirname(modelPath); + dstPath = path.join(dirname, filename); + } + } else { + dirname = path.dirname(modelPath); + filename = httpsSrc.split("/").pop(); + if (fs.existsSync(dirname)) { + dstPath = path.join(dirname, filename); + } else { + fs.mkdirSync(dirname, { recursive: true }); + dstPath = path.join(dirname, filename); + } + } + + let thisTempFile = tmp.fileSync({ postfix: suffix, dir: '/tmp' }); + let tmpFilename = thisTempFile.name.split("/").pop(); + let command = `aria2c -x 16 ${httpsSrc} -d /tmp -o ${tmpFilename} --allow-overwrite=true`; + await exec(command); + + if (fs.existsSync(dstPath)) { + let command2 = `rm ${dstPath}`; + await exec(command2); + } + + if (!dstPath.includes("collection.json") && !dstPath.includes("README.md")) { + let command3 = `mv /tmp/${tmpFilename} ${dstPath}`; + await exec(command3); + + if (fs.existsSync(thisTempFile.name)) { + let command4 = `rm /tmp/${tmpFilename}`; + await exec(command4); + } + } else { + let command3 = `cp /tmp/${tmpFilename} ${dstPath}`; + await exec(command3); + + if (fs.existsSync(thisTempFile.name)) { + let command4 = `rm /tmp/${tmpFilename}`; + await exec(command4); + } + } + + return dstPath; + } + + async downloadS3(s3Src, filenameDst, kwargs) { + if (filenameDst.split(".").length > 1) { + try { + let suffix = "." + filenameDst.split(".").pop(); + let thisTempFile = tmp.fileSync({ postfix: suffix, dir: '/tmp' }); + let thisFileKey = s3Src.split(s3cfg["bucket"] + "/")[1]; + + let params = { + Bucket: s3cfg["bucket"], + Key: thisFileKey + }; + + let file = fs.createWriteStream(thisTempFile.name); + let stream = s3.getObject(params).createReadStream().pipe(file); + + await new Promise((resolve, reject) => { + stream.on('finish', resolve); + stream.on('error', reject); + }); + + let results = fs.existsSync(thisTempFile.name); + if (results) { + fs.renameSync(thisTempFile.name, filenameDst); + + if (fs.existsSync(thisTempFile.name)) { + fs.unlinkSync(thisTempFile.name); + } + + return filenameDst; + } else { + return false; + } + } catch (e) { + if (fs.existsSync(thisTempFile.name)) { + fs.unlinkSync(thisTempFile.name); + } + return e; + } + } else { + throw new Error("Invalid filenameDst, no `.` suffix found"); + } + } + + async downloadIpfs(ipfsSrc, filenameDst, kwargs) { + if (filenameDst.split(".").length > 1) { + try { + if (!filenameDst.includes(".cache") && filenameDst.includes(".")) { + let suffix = "." + filenameDst.split(".").pop(); + let thisTempFile = tmp.fileSync({ postfix: suffix, dir: '/tmp' }); + + let results = await ipfs.get(ipfsSrc, { timeout: 10000 }); + if (results.path) { + fs.renameSync(results.path, filenameDst); + + if (fs.existsSync(thisTempFile.name)) { + fs.unlinkSync(thisTempFile.name); + } + + return filenameDst; + } else { + throw new Error("No path in results or timeout"); + } + } else { + let tempDir = tmp.dirSync({ dir: '/tmp' }); + let results = await ipfs.get(ipfsSrc, { timeout: 10000 }); + + if (results.path) { + fs.renameSync(results.path, filenameDst); + return filenameDst; + } + } + } catch (e) { + console.log("Exception thrown remove files"); + if (fs.existsSync(thisTempFile.name)) { + fs.unlinkSync(thisTempFile.name); + } + return e; + } + } else { + // throw new Error("Invalid filenameDst, no `.` suffix found"); + } + } + + + async downloadModel(model, kwargs) { + let ipfsTimestamp = null; + let s3Timestamp = null; + let localTimestamp = null; + let httpsTimestamp = null; + + if (typeof this.ipfsCollection === 'object' && this.ipfsCollection.hasOwnProperty('cache')) { + if (this.ipfsCollection.cache.hasOwnProperty('timestamp')) { + ipfsTimestamp = this.ipfsCollection.cache.timestamp; + } + if (ipfsTimestamp === null) { + ipfsTimestamp = Date.now(); + } + } + + // Assuming s3_kit.s3_ls_file is an async function + if (typeof this.s3Collection === 'object' && this.s3Collection.hasOwnProperty('cache')) { + if (this.s3Collection.cache.hasOwnProperty('timestamp')) { + s3Timestamp = this.s3Collection.cache.timestamp; + } + if (s3Timestamp === null) { + let s3File = path.basename(this.collectionCache.s3); + let s3Dir = path.dirname(this.collectionCache.s3); + s3Timestamp = await this.s3_kit.s3_ls_file(s3File, s3Dir); + let key = Object.keys(s3Timestamp)[0]; + s3Timestamp = s3Timestamp[key].last_modified; + } + } + + if (typeof this.localCollection === 'object' && this.localCollection.hasOwnProperty('cache')) { + if (this.localCollection.cache.hasOwnProperty('timestamp')) { + localTimestamp = this.localCollection.cache.timestamp; + } + if (localTimestamp === null) { + localTimestamp = fs.statSync(this.collectionCache.local).mtimeMs; + } + } + + if (typeof this.httpsCollection === 'object' && this.httpsCollection.hasOwnProperty('cache')) { + if (this.httpsCollection.cache.hasOwnProperty('timestamp')) { + httpsTimestamp = this.httpsCollection.cache.timestamp; + } + if (httpsTimestamp === null) { + httpsTimestamp = Date.now(); + } + } + + let timestamps = { + ipfs: ipfsTimestamp, + s3: s3Timestamp, + local: localTimestamp, + https: httpsTimestamp + }; + + if (!Object.values(timestamps).every(v => v === null)) { + timestamps = Object.fromEntries(Object.entries(timestamps).filter(([k, v]) => v !== null)); + let newest = Object.keys(timestamps).reduce((a, b) => timestamps[a] > timestamps[b] ? a : b); + } else { + throw new Error("No collection cache found"); + } + + let ipfsModelData = null; + let s3ModelData = null; + let localModelData = null; + let httpsModelData = null; + + if (typeof this.ipfsCollection === 'object' && this.ipfsCollection.hasOwnProperty(model)) { + ipfsModelData = this.ipfsCollection[model]; + } + if (typeof this.s3Collection === 'object' && this.s3Collection.hasOwnProperty(model)) { + s3ModelData = this.s3Collection[model]; + } + if (typeof this.localCollection === 'object' && this.localCollection.hasOwnProperty(model)) { + localModelData = this.localCollection[model]; + } + if (typeof this.httpsCollection === 'object' && this.httpsCollection.hasOwnProperty(model)) { + httpsModelData = this.httpsCollection[model]; + } + + let modelData = { + ipfs: ipfsModelData, + s3: s3ModelData, + local: localModelData, + https: httpsModelData + }; + + if (Object.values(modelData).every(v => v === null)) { + throw new Error("Model not found"); + } + + let thisModel = null; + + if (modelData[newest] !== null) { + if (modelData[newest].hwRequirements.diskUsage > os.freemem()) { + throw new Error("Not enough disk space to download model"); + } else { + thisModel = await this.autoDownload(modelData[newest], kwargs); + } + } else { + while (thisModel === null && Object.keys(timestamps).length > 0) { + delete timestamps[newest]; + newest = Object.keys(timestamps).reduce((a, b) => timestamps[a] > timestamps[b] ? a : b); + } + + if (modelData[newest] !== null) { + if (modelData[newest].hwRequirements.diskUsage > os.freemem()) { + throw new Error("Not enough disk space to download model"); + } else { + thisModel = await this.autoDownload(modelData[newest], kwargs); + } + } + + if (thisModel === null) { + throw new Error("Model not found"); + } + this.models.local_models[thisModel.id] = Date.now(); + } + return thisModel; + } + + async checkLocal(manifest, kwargs) { + let folderData = manifest["folderData"]; + let cache = manifest["cache"]; + let local = cache["local"]; + let checkFilenames = {}; + let localFiles = Object.keys(local); + let localPath = this.localPath + "/" + manifest["id"] + "/"; + for (let localFile of localFiles) { + let thisFile = local[localFile]; + // remove the first character if it is a "/" + let thisFileUrl = thisFile["url"]; + let thisFilePath = thisFile["path"]; + let thisLocalFile; + if (thisFilePath[0] == "/") { + thisLocalFile = thisFilePath.slice(1); + } else { + thisLocalFile = thisFilePath; + } + thisFilePath = path.join(localPath, thisLocalFile); + if (fs.existsSync(thisFilePath)) { + let thisFileMtime = fs.statSync(thisFilePath).mtimeMs; + checkFilenames[localFile] = thisFileMtime; + } else { + checkFilenames[localFile] = false; + } + } + + checkFilenames["/manifest.json"] = true; + if (Object.values(checkFilenames).every(Boolean)) { + delete checkFilenames["/manifest.json"]; + let oldestFileTimestamp = Math.min(...Object.values(checkFilenames)); + return oldestFileTimestamp; + } else { + return false; + } + } + + + async checkHttps(manifest, kwargs) { + let folderData = manifest["folderData"]; + let cache = manifest["cache"]; + let https = cache["https"]; + let httpsFiles = Object.keys(https); + let checkFilenames = {}; + for (let httpsFile of httpsFiles) { + let thisHttpsFile = https[httpsFile]; + if ("url" in thisHttpsFile && httpsFile != "/manifest.json") { + let thisHttpsUrl = thisHttpsFile["url"]; + try { + let results = await axios.head(thisHttpsUrl); + if (results.status === 200 || results.status === 302) { + checkFilenames[httpsFile] = Date.now(); + } else { + checkFilenames[httpsFile] = false; + } + } catch (e) { + checkFilenames[httpsFile] = false; + } + } else { + checkFilenames[httpsFile] = false; + } + } + + checkFilenames["/manifest.json"] = true; + if (Object.values(checkFilenames).every(Boolean)) { + return Date.now(); + } else { + return false; + } + } + + async checkS3(manifest, kwargs) { + let folderData = manifest["folderData"]; + let files = Object.keys(folderData); + let cache = manifest["cache"]; + let s3Cache = cache["s3"]; + let s3Files = Object.keys(s3Cache); + let checkFilenames = {}; + if (s3Files !== null) { + for (let s3File of s3Files) { + let thisS3Cache = s3Cache[s3File]; + let thisS3Path = thisS3Cache["path"]; + let thisS3Url = thisS3Cache["url"]; + let thisS3Split, thisS3Bucket, thisS3Key; + if (thisS3Url.includes("s3://")) { + thisS3Split = thisS3Url.split("/"); + thisS3Bucket = thisS3Split[2]; + thisS3Key = thisS3Split.slice(3).join("/"); + } else if (thisS3Url[0] === "/") { + thisS3Split = thisS3Path.split("/"); + thisS3Bucket = thisS3Split[2]; + thisS3Key = thisS3Split.slice(3).join("/"); + } + + try { + let results = await this.s3Kit.s3LsFile(thisS3Key, thisS3Bucket); + if (results !== null && results !== false && Object.keys(results).length > 0) { + let filename = Object.keys(results)[0]; + let fileMetadata = results[filename]; + let mtime = new Date(fileMetadata["LastModified"]).getTime(); + checkFilenames[s3File] = mtime; + } else { + checkFilenames[s3File] = false; + } + } catch (e) { + checkFilenames[s3File] = e; + } + } + } + + checkFilenames["/manifest.json"] = true; + if (Object.values(checkFilenames).every(Boolean)) { + delete checkFilenames["/manifest.json"]; + let oldestFileTimestamp = Math.min(...Object.values(checkFilenames)); + return oldestFileTimestamp; + } else { + return false; + } + } + + + async checkIpfs(manifest, kwargs) { + let folderData = manifest["folderData"]; + let cache = manifest["cache"]; + let ipfsCache = cache["ipfs"]; + let ipfsFiles = Object.keys(ipfsCache); + let checkFilenames = {}; + let ipfsPinset = Object.keys(this.ipfsPinset["ipfs"]); + for (let ipfsFile of ipfsFiles) { + let thisIpfsCache = ipfsCache[ipfsFile]; + if ("path" in thisIpfsCache && ipfsFile != "/manifest.json") { + let thisIpfsCid = thisIpfsCache["path"]; + try { + if (ipfsPinset.includes(thisIpfsCid)) { + checkFilenames[ipfsFile] = Date.now(); + } else { + checkFilenames[ipfsFile] = false; + } + } catch (e) { + checkFilenames[ipfsFile] = false; + } + } else { + checkFilenames[ipfsFile] = false; + } + } + + checkFilenames["/manifest.json"] = true; + if (Object.values(checkFilenames).every(Boolean)) { + return Date.now(); + } else { + return false; + } + } + + + async loadCollectionCache(cache = { + local: "/storage/cloudkit-models/collection.json", + s3: "s3://cloudkit-beta/collection.json", + ipfs: "QmXBUkLywjKGTWNDMgxknk6FJEYu9fZaEepv3djmnEqEqD", + https: "https://huggingface.co/endomorphosis/cloudkit-collection/resolve/main/collection.json" + }) { + let timestamp_0 = Date.now(); + if (fs.existsSync(cache.local)) { + let data = await readFile(cache.local); + this.local_collection = JSON.parse(data); + } + try { + let https_download = await this.download_https(cache.https, '/tmp/collection.json'); + if (fs.existsSync("./collection.json/collection.json")) { + await moveFile("./collection.json/collection.json", "/tmp/collection.json"); + await rimraf("./collection.json"); + } + if (fs.existsSync(https_download)) { + let data = await readFile(https_download); + this.https_collection = JSON.parse(data); + } else if (fs.existsSync('/tmp/collection.json')) { + let data = await readFile('/tmp/collection.json'); + this.https_collection = JSON.parse(data); + } + } catch (e) { + console.error(e); + } + let timestamp_1 = Date.now(); + try { + let ipfs_download = await this.download_ipfs(cache.ipfs, '/tmp/collection.json'); + let data = await readFile(ipfs_download); + this.ipfs_collection = JSON.parse(data); + } catch (e) { + console.error(e); + } + let timestamp_2 = Date.now(); + try { + let s3_download = await this.download_s3(cache.s3, '/tmp/collection.json'); + let data = await readFile(s3_download); + this.s3_collection = JSON.parse(data); + } catch (e) { + console.error(e); + } + let timestamp_3 = Date.now(); + + let timestamps = { + https: timestamp_1 - timestamp_0, + ipfs: timestamp_2 - timestamp_1, + s3: timestamp_3 - timestamp_2 + }; + + let fastest = Object.keys(timestamps).reduce((a, b) => timestamps[a] < timestamps[b] ? a : b); + this.fastest = fastest; + let file_size = (await stat('/tmp/collection.json')).size; + this.bandwidth = file_size / timestamps[fastest]; + + let md5_local = crypto.createHash('md5').update(JSON.stringify(this.local_collection)).digest("hex"); + let md5_ipfs = crypto.createHash('md5').update(JSON.stringify(this.ipfs_collection)).digest("hex"); + let md5_s3 = crypto.createHash('md5').update(JSON.stringify(this.s3_collection)).digest("hex"); + let md5_https = crypto.createHash('md5').update(JSON.stringify(this.https_collection)).digest("hex"); + + + if (md5_local === md5_ipfs && md5_local === md5_s3 && md5_local === md5_https) { + if (fastest === "ipfs" && Object.keys(this.ipfs_collection).length > 0) { + this.collection = this.ipfs_collection; + } else if (fastest === "s3" && Object.keys(this.s3_collection).length > 0) { + this.collection = this.s3_collection; + } else if (fastest === "https" && Object.keys(this.https_collection).length > 0) { + this.collection = this.https_collection; + } else if (fastest === "local" && Object.keys(this.local_collection).length > 0) { + this.collection = this.local_collection; + } else if (Object.keys(this.local_collection).length > 0) { + this.collection = this.local_collection; + } else { + throw new Error("No collection found"); + } + } + + let local_collection_cache = this.local_collection.cache || {}; + let ipfs_collection_cache = this.ipfs_collection.cache || {}; + let s3_collection_cache = this.s3_collection.cache || {}; + let https_collection_cache = this.https_collection.cache || {}; + + let modified = {}; + if (local_collection_cache.timestamp) { + modified.local = local_collection_cache.timestamp; + } + if (ipfs_collection_cache.timestamp) { + modified.ipfs = ipfs_collection_cache.timestamp; + } + if (s3_collection_cache.timestamp) { + modified.s3 = s3_collection_cache.timestamp; + } + if (https_collection_cache.timestamp) { + modified.https = https_collection_cache.timestamp; + } + + if (Object.keys(modified).length > 0) { + let newest = Object.keys(modified).reduce((a, b) => modified[a] > modified[b] ? a : b); + this.collection = this[newest + "_collection"]; + } else { + let sizes = { + local: JSON.stringify(this.local_collection).length, + ipfs: JSON.stringify(this.ipfs_collection).length, + s3: JSON.stringify(this.s3_collection).length, + https: JSON.stringify(this.https_collection).length + }; + let largest = Object.keys(sizes).reduce((a, b) => sizes[a] > sizes[b] ? a : b); + this.collection = this[largest + "_collection"]; + } + + if (fs.existsSync(cache.local)) { + let data = await readFile(cache.local); + this.local_collection = JSON.parse(data); + } + + return this.collection; + } + + + async auto_download(manifest, kwargs) { + let ls_models = this.ls_models(); + let this_model_manifest = manifest; + this.history_models[this_model_manifest["id"]] = Date.now(); + let this_model_manifest_cache = this_model_manifest["cache"]; + let this_model_manifest_folder_data = this_model_manifest["folderData"]; + let s3_test = false; + let ipfs_test = false; + let https_test = false; + let local_test = false; + + // Local test + try { + if (fs.existsSync(this_model_manifest_cache["local"]["/README.md"]["path"])) { + local_test = true; + let basename = path.basename(this_model_manifest_cache["local"]["/README.md"]["path"]); + for (let file of this_model_manifest_folder_data) { + if (!fs.existsSync(path.join(basename, file))) { + local_test = false; + break; + } + } + } + } catch (e) { + local_test = false; + } + + let timestamp_0 = Date.now(); + + // IPFS test + try { + ipfs_test = false; + let this_temp_file = tmp.fileSync({ postfix: '.md' }); + if ("/README.md" in Object.keys(this_model_manifest_cache["ipfs"])) { + let ipfs_test_file = await this.download_ipfs(this_model_manifest_cache["ipfs"]["/README.md"]["path"], this_temp_file.name); + let ipfs_test = fs.readFileSync(ipfs_test_file, 'utf8'); + ipfs_test = ipfs_test.length > 0; + } + } catch (e) { + ipfs_test = e; + } + + let timestamp_1 = Date.now(); + + // S3 test + try { + let this_temp_file = tmp.fileSync({ postfix: '.md' }); + if ("/README.md" in Object.keys(this_model_manifest_cache["s3"])) { + let s3_test; + if (this_model_manifest_cache["s3"]["/README.md"]["url"].startsWith("s3://")) { + s3_test = await this.download_s3(this_model_manifest_cache["s3"]["/README.md"]["url"], this_temp_file.name); + } else { + s3_test = await this.download_s3(this_model_manifest_cache["s3"]["/README.md"]["path"], this_temp_file.name); + } + s3_test = s3_test.toString(); + if (!s3_test.includes("error")) { + let s3_test = fs.readFileSync(this_temp_file.name, 'utf8'); + s3_test = s3_test.length > 0; + } else { + s3_test = false; + } + } + } catch (e) { + s3_test = e; + } + + let timestamp_2 = Date.now(); + + // HTTPS test + try { + let this_temp_file = tmp.fileSync({ postfix: '.md' }); + if ("/README.md" in Object.keys(this_model_manifest_cache["https"])) { + let https_url = this_model_manifest_cache["https"]["/README.md"]["url"]; + let https_test_file = await this.download_https(https_url, this_temp_file.name); + let https_test = fs.readFileSync(https_test_file, 'utf8'); + https_test = https_test.length > 0; + } + } catch (e) { + https_test = e; + } + + let timestamp_3 = Date.now(); + + let timestamps = { + "ipfs": timestamp_1 - timestamp_0, + "s3": timestamp_2 - timestamp_1, + "https": timestamp_3 - timestamp_2, + "local": 0 + }; + + let test = { + "ipfs": ipfs_test, + "s3": s3_test, + "https": https_test, + "local": local_test + }; + + let download_src = null; + let fastest = Object.keys(timestamps).reduce((a, b) => timestamps[a] < timestamps[b] ? a : b); + + while (test[fastest] === false || test[fastest] !== true) { + delete timestamps[fastest]; + fastest = Object.keys(timestamps).reduce((a, b) => timestamps[a] < timestamps[b] ? a : b); + } + + if (test[fastest] === true) { + download_src = fastest; + } else { + download_src = null; + } + + + if (download_src === null) { + throw new Error("Model not found"); + } else { + let file_list = Object.keys(this_model_manifest_folder_data); + let file_success = {}; + for (let file of file_list) { + if (!file.startsWith("/")) { + file = "/" + file; + } + let suffix = null; + if (file.includes(".")) { + suffix = "." + file.split(".").pop(); + } else { + fs.mkdirSync("/tmp/"+file, { recursive: true }); + } + let this_download_src = download_src; + let this_file_size = this_model_manifest_folder_data[file]["size"]; + let this_file_md5 = this_model_manifest_folder_data[file].hasOwnProperty("md5") ? this_model_manifest_folder_data[file]["md5"] : null; + let this_tmp_file = "/tmp/" + file.split("/").slice(1).join("/"); + let this_local_file = this.local_path + "/" + this_model_manifest["id"] + this_model_manifest_cache["local"][file]["path"].slice(1); + let this_local_file_size = null; + let this_local_file_md5 = null; + if (fs.existsSync(this_local_file)) { + this_local_file_size = fs.statSync(this_local_file).size; + this_local_file_md5 = child_process.execSync("md5sum " + this_local_file).toString().split(" ")[0]; + } + if ((file === "/README.md" || file === "/manifest.json") || (this_file_size === this_local_file_size || this_file_size === null) && (this_file_md5 === this_local_file_md5 || this_file_md5 === null)) { + file_success[file] = true; + } else { + // Implement the download_ipfs, download_s3, and download_https methods here + } + } + if (Object.values(file_success).every(value => value === true)) { + if (!fs.existsSync(this.local_path + "/" + this_model_manifest["id"])) { + fs.mkdirSync(this.local_path + "/" + this_model_manifest["id"], { recursive: true }); + } + for (let file of file_list) { + if (file.startsWith("/")) { + file = file.slice(1); + } + let src_path = "/tmp/" + file; + let dst_path = this.local_path + "/" + this_model_manifest["id"] + "/" + file; + if (!fs.existsSync(dst_path) && fs.existsSync(src_path)) { + if (fs.lstatSync(src_path).isDirectory()) { + fs.mkdirSync(dst_path, { recursive: true }); + child_process.execSync("cp -r " + src_path + "/* " + dst_path); + child_process.execSync("rm -r " + src_path); + } else { + fs.renameSync(src_path, dst_path); + } + } + } + return this_model_manifest; + } else { + throw new Error("Model not found"); + } + } + } + + ls_models() { + let ipfs_keys = []; + let s3_keys = []; + let local_keys = []; + let https_keys = []; + if (this.ipfs_collection !== null && _.isObject(this.s3_collection)) { + ipfs_keys = Object.keys(this.ipfs_collection); + } + if (this.s3_collection !== null && _.isObject(this.s3_collection)) { + s3_keys = Object.keys(this.s3_collection); + } + if (this.local_collection !== null && _.isObject(this.s3_collection)) { + local_keys = Object.keys(this.local_collection); + } + if (this.https_collection !== null && _.isObject(this.s3_collection)) { + https_keys = Object.keys(this.https_collection); + } + let all_keys = _.union(ipfs_keys, s3_keys, local_keys, https_keys); + all_keys = _.without(all_keys, "cache", "error"); + return all_keys; + } + + + ls_s3_models() { + let ls_models = this.ls_models(); + let s3_models = {}; + let timestamps = {}; + let this_collection; + let collections = { + 'ipfs': this.ipfs_collection, + 's3': this.s3_collection, + 'local': this.local_collection, + 'https': this.https_collection + }; + + for (let key in collections) { + if (_.isObject(collections[key]) && collections[key].hasOwnProperty('cache') && collections[key]['cache'].hasOwnProperty('timestamp')) { + timestamps[key] = collections[key]['cache']['timestamp']; + } + } + + if (Object.keys(timestamps).length !== 0) { + let newest = Object.keys(timestamps).reduce((a, b) => timestamps[a] > timestamps[b] ? a : b); + this_collection = collections[newest]; + } else { + for (let key in collections) { + if (!collections[key].hasOwnProperty('error')) { + this_collection = collections[key]; + break; + } + } + } + + for (let model of ls_models) { + if (this_collection.hasOwnProperty(model) && model !== "cache" && model !== "error") { + let results = this.check_s3(this_collection[model]); + if (results !== null && results !== false) { + s3_models[model] = results; + } + } + } + + this.s3_models = s3_models; + return s3_models; + } + + + ls_https_models() { + let ls_models = this.ls_models(); + let https_models = {}; + let timestamps = {}; + let this_collection; + let collections = { + 'ipfs': this.ipfs_collection, + 's3': this.s3_collection, + 'local': this.local_collection, + 'https': this.https_collection + }; + + for (let key in collections) { + if (_.isObject(collections[key]) && collections[key].hasOwnProperty('cache') && collections[key]['cache'].hasOwnProperty('timestamp')) { + timestamps[key] = collections[key]['cache']['timestamp']; + } + } + + if (Object.keys(timestamps).length !== 0) { + let newest = Object.keys(timestamps).reduce((a, b) => timestamps[a] > timestamps[b] ? a : b); + this_collection = collections[newest]; + } else { + for (let key in collections) { + if (!collections[key].hasOwnProperty('error')) { + this_collection = collections[key]; + break; + } + } + } + + for (let model of ls_models) { + if (this_collection.hasOwnProperty(model) && model !== "cache" && model !== "error") { + let results = this.check_https(this_collection[model]); + if (results !== null && results !== false) { + https_models[model] = results; + } + } else { + for (let key in collections) { + if (collections[key].hasOwnProperty(model) && model !== "cache" && model !== "error") { + let results = this.check_https(collections[key][model]); + if (results !== null && results !== false) { + https_models[model] = results; + } + break; + } + } + } + } + + this.https_models = https_models; + return https_models; + } + + + ls_ipfs_models() { + let ls_models = this.ls_models(); + let ipfs_models = {}; + let timestamps = {}; + let this_collection; + let collections = { + 'ipfs': this.ipfs_collection, + 's3': this.s3_collection, + 'local': this.local_collection, + 'https': this.https_collection + }; + + for (let key in collections) { + if (_.isObject(collections[key]) && collections[key].hasOwnProperty('cache') && collections[key]['cache'].hasOwnProperty('timestamp')) { + timestamps[key] = collections[key]['cache']['timestamp']; + } + } + + if (Object.keys(timestamps).length !== 0) { + let newest = Object.keys(timestamps).reduce((a, b) => timestamps[a] > timestamps[b] ? a : b); + this_collection = collections[newest]; + } else { + for (let key in collections) { + if (!collections[key].hasOwnProperty('error')) { + this_collection = collections[key]; + break; + } + } + } + + for (let model of ls_models) { + if (this_collection.hasOwnProperty(model) && model !== "cache" && model !== "error") { + let results = this.check_ipfs(this_collection[model]); + if (results !== null && results !== false) { + ipfs_models[model] = results; + } + } else { + for (let key in collections) { + if (collections[key].hasOwnProperty(model) && model !== "cache" && model !== "error") { + let results = this.check_ipfs(collections[key][model]); + if (results !== null && results !== false) { + ipfs_models[model] = results; + } + break; + } + } + } + } + + this.ipfs_models = ipfs_models; + return ipfs_models; + } + + + state(kwargs = {}) { + const timestamp = Date.now() / 1000; + const one_hour_ago = timestamp - 3600; + const one_day_ago = timestamp - 86400; + const ten_days_ago = timestamp - 8640000; + + try { + if (fs.existsSync(path.join(this.ipfs_path, "state.json"))) { + const state_mtime = fs.statSync(path.join(this.ipfs_path, "state.json")).mtime.getTime() / 1000; + if (state_mtime > one_day_ago) { + this.last_update = state_mtime; + this.models = JSON.parse(fs.readFileSync(path.join(this.ipfs_path, "state.json"), 'utf8')); + this.last_update = timestamp; + } + } else { + execSync(`touch ${path.join(this.ipfs_path, "state.json")}`); + } + } catch (e) { + this.models = {}; + } + + const src = kwargs.src || "all"; + if (src !== "all") { + // Your implementation here + } else { + if (this.last_update < ten_days_ago) { + // Your implementation here + } + } + + // Your implementation here + + const stringified_models = JSON.stringify(this.models); + const models_md5 = crypto.createHash('md5').update(stringified_models).digest('hex'); + let state_json_md5; + + try { + const state_json = JSON.parse(fs.readFileSync(path.join(this.ipfs_path, "state.json"), 'utf8')); + state_json_md5 = crypto.createHash('md5').update(JSON.stringify(state_json)).digest('hex'); + } catch (e) { + fs.writeFileSync(path.join(this.ipfs_path, "state.json"), stringified_models); + state_json_md5 = crypto.createHash('md5').update(fs.readFileSync(path.join(this.ipfs_path, "state.json"), 'utf8')).digest('hex'); + } + + if (models_md5 !== state_json_md5) { + fs.writeFileSync(path.join(this.ipfs_path, "state.json"), stringified_models); + } + + return this.models; + } + + + evict_local(model, kwargs = {}) { + const local_model_path = path.join(this.local_path, model); + if (fs.existsSync(local_model_path)) { + rimraf.sync(local_model_path); + } + return true; + } + + async evict_s3(model, kwargs = {}) { + const s3_model_path = this.collection[model]["cache"]["s3"]; + const s3_model_url = s3_model_path[0]["url"]; + const s3_model_path_parts = s3_model_url.split("/"); + const s3_model_bucket = s3_model_path_parts[2]; + const s3_model_dir = s3_model_path_parts[3]; + const results = await this.s3_kit.deleteObject({ + Bucket: s3_model_bucket, + Key: s3_model_dir + }).promise(); + return results; + } + + async evict_models(kwargs = {}) { + const ls_models = this.ls_models(); + const history = this.history(); + const current_timestamp = Date.now() / 1000; + + for (const model of ls_models) { + if (this.models["local_models"].hasOwnProperty(model)) { + const this_model_timestamp = this.models["local_models"][model]; + const this_history_timestamp = new Date(history[model]).getTime() / 1000; + if (current_timestamp - this_model_timestamp > this.timing["local_time"] && current_timestamp - this_history_timestamp > this.timing["local_time"]) { + await this.evict_local(model); + delete this.models["local_models"][model]; + } + } else if (this.models["s3_models"].hasOwnProperty(model)) { + const this_model_timestamp = this.models["s3_models"][model]; + const this_history_timestamp = new Date(history[model]).getTime() / 1000; + if (current_timestamp - this_model_timestamp > this.timing["s3_time"] && current_timestamp - this_history_timestamp > this.timing["s3_time"]) { + await this.evict_s3(model); + delete this.models["s3_models"][model]; + } + } + } + + for (const model in this.models["local_models"]) { + if (!ls_models.includes(model)) { + await this.evict_local(model); + delete this.models["local_models"][model]; + } + } + + for (const model in this.models["s3_models"]) { + if (!ls_models.includes(model)) { + await this.evict_s3(model); + delete this.models["s3_models"][model]; + } + } + + const results = { + "s3_models": this.models["s3_models"], + "ipfs_models": this.models["ipfs_models"], + "local_models": this.models["local_models"], + "https_models": this.models["https_models"] + }; + + return results; + } + + +async check_history_models(kwargs = {}) { + const ls_models = this.ls_models(); + const current_timestamp = Date.now() / 1000; + const history_json_path = path.join(this.ipfs_path, "history.json"); + + if (Object.keys(this.history_models).length === 0) { + if (fs.existsSync(history_json_path)) { + try { + this.history_models = JSON.parse(fs.readFileSync(history_json_path, 'utf8')); + } catch (e) { + fs.writeFileSync(history_json_path, JSON.stringify({})); + } + } + } + + for (const model of ls_models) { + if (!this.history_models.hasOwnProperty(model)) { + this.history_models[model] = null; + } + + if (this.history_models[model] !== null) { + const this_model_timestamp = new Date(this.history[model]).getTime() / 1000; + if (current_timestamp - this_model_timestamp > 60) { + this.history_models[model] = null; + } + } + } + + for (const model in this.history_models) { + if (!ls_models.includes(model)) { + delete this.history_models[model]; + } + } + + const history_json_mtime = fs.existsSync(history_json_path) ? fs.statSync(history_json_path).mtime.getTime() / 1000 : null; + if (!history_json_mtime || current_timestamp - history_json_mtime > 60) { + fs.writeFileSync(history_json_path, JSON.stringify(this.history_models)); + } + + return this.history_models; + } + + +async check_zombies(kwargs = {}) { + const ls_models = this.ls_models(); + const local_files = fs.readdirSync(this.local_path, { withFileTypes: true }); + const ls_local_files = []; + const collection_files = ["collection.json"]; + const zombies = {}; + + local_files.forEach(file => { + if (file.isFile()) { + let tmp_filename = path.join(this.local_path, file.name); + tmp_filename = tmp_filename.split(path.sep).slice(3).join(path.sep); + const split_tmp_filename = tmp_filename.split(path.sep); + if (split_tmp_filename.length > 1 && !tmp_filename.includes("ipfs") && !tmp_filename.includes("cloudkit")) { + ls_local_files.push(tmp_filename); + } + } + }); + + for (const model in this.collection) { + if (model !== "cache") { + const this_model = this.collection[model]; + const this_folder_name = this_model["id"]; + const this_folder_data = this_model["folderData"]; + this_folder_data.forEach(file => { + collection_files.push(this_folder_name + file); + }); + } + } + + const s3_files = await this.s3_kit.s3_ls_dir("", this.s3cfg["bucket"]); + const s3_file_names = s3_files.map(file => file["key"]); + + const ipfs_files = await this.ipfs_kit.ipfs_ls_path("/"); + const ipfs_file_names = ipfs_files["ipfs_ls_path"].map(file => file["name"]); + + const collection_pins = this.collection_pins; + + const compare_s3_files = s3_file_names.filter(x => !collection_files.includes(x)); + zombies["s3"] = compare_s3_files; + const compare_local_files = ls_local_files.filter(x => !collection_files.includes(x)); + zombies["local"] = compare_local_files; + const compare_ipfs_files = ipfs_file_names.filter(x => !collection_files.includes(x)); + zombies["ipfs_files"] = compare_ipfs_files; + const compare_ipfs_pins = collection_pins.filter(x => !this.ipfs_pinset.includes(x)); + zombies["ipfs"] = compare_ipfs_pins; + + this.zombies = zombies; + return zombies; + } + rand_history(kwargs = {}) { + const history = this.history_models; + const two_weeks_ago = Date.now() / 1000 - 14 * 24 * 60 * 60; + const two_days_ago = Date.now() / 1000 - 2 * 24 * 60 * 60; + const now = Date.now() / 1000; + + for (const model in history) { + const random_float = Math.random(); + const random_timestamp = ((now - two_weeks_ago) * random_float) + two_weeks_ago; + history[model] = random_timestamp; + } + + this.history_models = history; + return history; + } + + check_expired(kwargs = {}) { + const ls_models = this.ls_models(); + const current_timestamp = Date.now() / 1000; + const expired = { + "local" : [], + "s3" : [], + "ipfs": [], + }; + + for (const model of ls_models) { + if ("local_models" in this.models && model in this.models["local_models"]) { + const this_model_timestamp = this.models["local_models"][model]; + if (current_timestamp - this_model_timestamp > this.timing["local_time"] && current_timestamp - this.history_models[model] > this.timing["local_time"]) { + expired["local"].push(model); + } + } + if ("s3Models" in this.models && model in this.models["s3Models"]) { + const this_model_timestamp = this.models["s3Models"][model]; + if (current_timestamp - this_model_timestamp > this.timing["s3_time"] && current_timestamp - this.history_models[model] > this.timing["s3_time"]) { + expired["s3"].push(model); + } + } + if ("s3_models" in this.models && model in this.models["s3_models"]) { + const this_model_timestamp = this.models["s3_models"][model]; + if (current_timestamp - this_model_timestamp > this.timing["s3_time"] && current_timestamp - this.history_models[model] > this.timing["s3_time"]) { + expired["s3"].push(model); + } + } + } + + this.expired = expired; + return this.expired; + } + + check_pinned_models(kwargs = {}) { + const ls_models = this.ls_models(); + + while (Object.keys(this.pinned_models).length < 5) { + const random_number = Math.random(); + const calculate = Math.round(random_number * ls_models.length); + if (calculate < ls_models.length) { + const chosen_model = ls_models[calculate]; + this.pinned_models[chosen_model] = Date.now() / 1000; + } + } + + // remove later and get data from orchestrator + return this.pinned; + } + + check_not_found(kwargs = {}) { + const ls_models = this.ls_models(); + const not_found = { + "local" : [], + "s3" : [], + }; + + for (const model in this.history_models) { + const current_time = Date.now() / 1000; + const time_delta = current_time - this.history_models[model]; + if (time_delta < this.timing["local_time"]) { + if ("local_models" in this.models && !(model in this.models["local_models"])) { + not_found["local"].push(model); + } + if ("s3_models" in this.models && !(model in this.models["s3_models"])) { + not_found["s3"].push(model); + } + } + } + + for (const model in this.pinned_models) { + if ("local_models" in this.models && !(model in this.models["local_models"])) { + not_found["local"].push(model); + } + if ("s3_models" in this.models && !(model in this.models["s3_models"])) { + not_found["s3"].push(model); + } + } + + this.not_found = not_found; + return this.not_found; + } + + download_missing(kwargs = {}) { + const current_timestamp = Date.now() / 1000; + const not_found = this.check_not_found(); + for (const model of not_found["local"]) { + if (model in this.pinned_models) { + this.download_model(model); + this.models["local_models"][model] = Date.now() / 1000; + } else if (this.history_models[model] > current_timestamp - this.timing["local_time"]) { + this.download_model(model); + this.models["local_models"][model] = Date.now() / 1000; + } + } + for (const model of not_found["s3"]) { + if (model in this.pinned_models) { + this.s3_kit.s3_ul_dir(this.local_path + "/" + model, this.s3cfg["bucket"], this.models["s3_models"][model]["folderData"]); + this.models["s3_models"][model] = Date.now() / 1000; + } else if (this.history_models[model] > current_timestamp - this.timing["s3_time"]) { + this.s3_kit.s3_ul_dir(this.local_path + "/" + model, this.s3cfg["bucket"], this.models["s3_models"][model]["folderData"]); + this.models["s3_models"][model] = Date.now() / 1000; + } + } + return null; + } + + evict_expired_models(kwargs = {}) { + const current_timestamp = Date.now() / 1000; + const expired = this.expired; + for (const model of expired["local"]) { + this.evict_local(model); + delete this.models["local_models"][model]; + } + for (const model of expired["s3"]) { + this.evict_s3(model); + delete this.models["s3_models"][model]; + } + return null; + } + + evict_zombies(kwargs = {}) { + const zombies = this.zombies; + for (const file of zombies["local"]) { + fs.unlinkSync(path.join(this.local_path, file)); + } + for (const file of zombies["s3"]) { + this.s3_kit.s3_rm_file(file, this.s3cfg["bucket"]); + } + return null; + } + + + test(kwargs = {}) { + this.load_collection_cache(); + this.state(); + // this.state({src: "s3"}); + this.state({src: "local"}); + // this.state({src: "ipfs"}); + // this.state({src: "https"}); + this.check_pinned_models(); + this.check_history_models(); + this.rand_history(); + this.check_zombies(); + this.check_expired(); + this.check_not_found(); + // this.download_model('gte-small'); + // this.download_model('stablelm-zephyr-3b-GGUF-Q2_K'); + this.download_missing(); + this.evict_expired_models(); + this.evict_zombies(); + return this; + } + +} \ No newline at end of file diff --git a/huggingface_scraper/modeldata/generate_diffusion.json b/huggingface_scraper/modeldata/generate_diffusion.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/huggingface_scraper/modeldata/generate_diffusion.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/huggingface_scraper/orbitdb_kit_lib/import-collection.js b/huggingface_scraper/orbitdb_kit_lib/import-collection.js new file mode 100644 index 0000000..78218ab --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/import-collection.js @@ -0,0 +1,29 @@ +import { WebSocket } from 'ws'; +import fs from 'fs'; +import path from 'path'; + +const parent_dir = path.dirname("../.."); +const resolve_path = path.resolve(parent_dir) +const collection_path = path.join(resolve_path, 'collection.json'); + +export default async function main(collection_path){ + const ws = new WebSocket('ws://localhost:8080'); + ws.on('open', () => { + let collection = fs.readFileSync(collection_path, 'utf8'); + let collection_json = JSON.parse(collection); + for (let i = 0; i < Object.keys(collection_json).length; i++){ + let id = Object.keys(collection_json)[i]; + let content = collection_json[id]; + ws.send( + JSON.stringify({ + 'insert':{ _id: id, content: content } + }) + ) + } + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(collection_path); \ No newline at end of file diff --git a/huggingface_scraper/orbitdb_kit_lib/import_hf_dataset.js b/huggingface_scraper/orbitdb_kit_lib/import_hf_dataset.js new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/import_hf_dataset.js @@ -0,0 +1 @@ + diff --git a/huggingface_scraper/orbitdb_kit_lib/orbitv3-master.js b/huggingface_scraper/orbitdb_kit_lib/orbitv3-master.js new file mode 100644 index 0000000..330c46c --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/orbitv3-master.js @@ -0,0 +1,184 @@ +import {createOrbitDB, Identities, OrbitDBAccessController} from '@orbitdb/core' +import {createHelia} from 'helia' +import {v4 as uuidv4} from 'uuid'; +import {EventEmitter} from "events"; +import {createLibp2p} from 'libp2p' +import {identify} from '@libp2p/identify' +import {noise} from '@chainsafe/libp2p-noise' +import {yamux} from '@chainsafe/libp2p-yamux' +import {gossipsub} from '@chainsafe/libp2p-gossipsub' +import {bitswap} from '@helia/block-brokers' +import {tcp} from '@libp2p/tcp' +import {mdns} from '@libp2p/mdns' +import {LevelBlockstore} from 'blockstore-level' +import {createRequire} from "module"; +import { WebSocketServer } from 'ws' + +const require = createRequire(import.meta.url); + +const ipfsLibp2pOptions = { + transports: [ + tcp(), + ], + streamMuxers: [ + yamux() + ], + connectionEncryption: [ + noise() + ], + peerDiscovery: [ + mdns({ + interval: 20e3 + }) + ], + services: { + pubsub: gossipsub({ + allowPublishToZeroPeers: true + }), + identify: identify() + }, + connectionManager: {} +} + +EventEmitter.defaultMaxListeners = 20; + +let ipfs +let orbitdb +let db + +async function run() { + process.env.LIBP2P_FORCE_PNET = "1" + const argv = require('minimist')(process.argv.slice(2)) + let ipAddress + if (!argv.ipAddress) { + ipAddress = "127.0.0.1" + } else { + ipAddress = argv.ipAddress + } + + process.on('SIGTERM', handleTerminationSignal); + process.on('SIGINT', handleTerminationSignal); + console.info('Script is running. Press CTRL+C to terminate.'); + + const libp2p = await createLibp2p({ + addresses: { + listen: [`/ip4/${ipAddress}/tcp/0`] + }, ...ipfsLibp2pOptions + }) + const blockstore = new LevelBlockstore(`./ipfs/1/blocks`) + ipfs = await createHelia({blockstore: blockstore, libp2p: libp2p, blockBrokers: [bitswap()]}) + const identities = await Identities({ipfs, path: `./orbitdb/1/identities`}) + const id = "1" + identities.createIdentity({id}) // Remove the unused variable 'identity' + orbitdb = await createOrbitDB({ipfs: ipfs, identities, id: `1`, directory: `./orbitdb/1`}) + + db = await orbitdb.open('ipfs_transformers', + { + type: 'documents', + AccessController: OrbitDBAccessController({write: ["*"]}) + }) + console.info(`running with db address ${db.address}`) + // Add a new WebSocket server + const wss = new WebSocketServer({ port: 8080 }) + wss.on('connection', (ws) => { + console.log('New WebSocket connection'); + ws.on('message', (message) => { + message = JSON.parse(message.toString()); + console.log('Received message:', message); + let method = Object.keys(message)[0]; + let data = message[method]; + // Handle WebSocket messages here + switch (method) { + case 'insert': + // Handle insert logic + let insertKey = data._id; + let insertValue = data.content; + console.log('Inserting data: ', insertKey, insertValue); + validate(insertValue).then((result) => { + if (result) { + db.put(data).then(() => { + console.log('Data inserted:', data); + ws.send('Data inserted'); + }).catch((error) => { + console.error('Error inserting data:', error); + ws.send('Error inserting data'); + }); + } + else{ + console.error('Data validation failed:', insertValue); + ws.send('Data validation failed'); + } + }); + break; + case 'update': + // Handle update logic + let updateKey = data._id; + let updateValue = data.content; + let updatedDoc = {_id: updateKey, content: updateValue}; + let docToUpdate = db.get(updateKey).then((doc) => { + validate(updatedDoc).then((result) => { + db.put(updatedDoc).then(() => { + console.log('Data updated:', data); + ws.send('Data updates'); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }) + }).catch((error) => { + console.error('Error upfating document:', error); + ws.send('Error updating document'); + }); + break; + case 'select': + // Handle select logic + let selectID = data._id; + let docToSelect = db.get(selectID).then((doc) => { + console.log('Selected document:', doc); + ws.send(JSON.stringify(doc)); + }).catch((error) => { + console.error('Error selecting document:', error); + ws.send('Error selecting document'); + }) + break; + case 'delete': + // Handle delete by ID logic + let deleteId = data._id; + let docToDelete = db.get(deleteId).then((doc) => { + db.del(deleteId).then((deletedDoc) => { + console.log('Document deleted:', deletedDoc); + ws.send('Document deleted'); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + break; + default: + console.log('Unknown message:', message); + break; + } + }); + }); +} + +async function validate() { + // Add validation logic here + return true; +} + +async function handleTerminationSignal() { + console.info('received termination signal, cleaning up and exiting...'); + await db.close() + await orbitdb.stop() + await ipfs.stop() + process.exit(); +} + +await run() \ No newline at end of file diff --git a/huggingface_scraper/orbitdb_kit_lib/package.json b/huggingface_scraper/orbitdb_kit_lib/package.json new file mode 100644 index 0000000..9ebe341 --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/package.json @@ -0,0 +1,36 @@ +{ + "name": "agwp2pdb", + "version": "1.0.0", + "description": "AGW P2P distributed database", + "main": "orbit.js", + "type": "module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "AGW", + "P2P", + "orbit" + ], + "author": "Karsten Ohme", + "license": "UNLICENSED", + "dependencies": { + "@chainsafe/libp2p-gossipsub": "^11.1.0", + "@chainsafe/libp2p-noise": "^15.0.0", + "@helia/block-brokers": "^1.0.0", + "@libp2p/bootstrap": "^10.0.12", + "@libp2p/circuit-relay-v2": "^1.0.12", + "@libp2p/mdns": "^10.0.12", + "@libp2p/tcp": "^9.0.12", + "@libp2p/webrtc": "^4.0.16", + "@libp2p/websockets": "^8.0.12", + "@orbitdb/core": "^2.0.1", + "blockstore-level": "^1.1.7", + "bson": "^6.2.0", + "helia": "^3.0.1", + "libp2p": "^1.2.0", + "minimist": "^1.2.8", + "private-ip": "^3.0.2", + "uuid": "^9.0.1" + } +} diff --git a/huggingface_scraper/orbitdb_kit_lib/websocket_test_master.js b/huggingface_scraper/orbitdb_kit_lib/websocket_test_master.js new file mode 100644 index 0000000..faf6314 --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/websocket_test_master.js @@ -0,0 +1,19 @@ +import { WebSocket } from 'ws'; + +export default async function main(){ + const ws = new WebSocket('ws://localhost:8080'); + ws.on('open', () => { + ws.send(JSON.stringify({'insert': { _id: '1', content: 'content 1' }})) + + ws.send(JSON.stringify({'select': { _id: '1' }})) + + ws.send(JSON.stringify({"update": { _id: '1', content: 'content 2' }})) + + ws.send(JSON.stringify({'delete': { _id: '1' }})) + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(); \ No newline at end of file diff --git a/huggingface_scraper/orbitdb_kit_lib/yarn.lock b/huggingface_scraper/orbitdb_kit_lib/yarn.lock new file mode 100644 index 0000000..b3f46c1 --- /dev/null +++ b/huggingface_scraper/orbitdb_kit_lib/yarn.lock @@ -0,0 +1,6371 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@achingbrain/nat-port-mapper@^1.0.13": + version "1.0.13" + resolved "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.13.tgz" + integrity sha512-B5GL6ILDek72OjoEyFGEuuNYaEOYxO06Ulhcaf/5iQ4EO8uaZWS+OkolYST7L+ecJrkjfaSNmSAsWRRuh+1Z5A== + dependencies: + "@achingbrain/ssdp" "^4.0.1" + "@libp2p/logger" "^4.0.1" + default-gateway "^7.2.2" + err-code "^3.0.1" + it-first "^3.0.1" + p-defer "^4.0.0" + p-timeout "^6.1.1" + xml2js "^0.6.0" + +"@achingbrain/ssdp@^4.0.1": + version "4.0.6" + resolved "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.0.6.tgz" + integrity sha512-Y4JE2L9150i50V6lg/Y8+ilhxRpUZKKv+PKo68Aj7MjPfaUAar6ZHilF9h4/Zb3q0fqGMXNc9o11cQLNI8J8bA== + dependencies: + event-iterator "^2.0.0" + freeport-promise "^2.0.0" + merge-options "^3.0.4" + xml2js "^0.6.2" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.20.0", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz" + integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz" + integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.20.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz" + integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz" + integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-default-from" "^7.24.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz" + integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz" + integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz" + integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz" + integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz" + integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.1" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz" + integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz" + integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz" + integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz" + integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz" + integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz" + integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.5.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz" + integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-typescript" "^7.24.1" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.1.6": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz" + integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.4" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.13.13": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz" + integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-flow-strip-types" "^7.24.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.13.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/register@^7.13.16": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz" + integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.20.0", "@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@chainsafe/as-chacha20poly1305@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz" + integrity sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew== + +"@chainsafe/as-sha256@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.1.tgz" + integrity sha512-IqeeGwQihK6Y2EYLFofqs2eY2ep1I2MvQXHzOAI+5iQN51OZlUkrLgyAugu2x86xZewDk5xas7lNczkzFzF62w== + +"@chainsafe/is-ip@^2.0.1", "@chainsafe/is-ip@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + +"@chainsafe/libp2p-gossipsub@^11.0.0", "@chainsafe/libp2p-gossipsub@^11.1.0": + version "11.2.1" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-11.2.1.tgz" + integrity sha512-2NvlOY4Jfwn7U/sKF0kILl3+luHxq9hhEiBqZRqLTIV8LYmMQl9VpTMgMvRwKzgn/NDeZzsPb8olk2o00tkmZw== + dependencies: + "@libp2p/crypto" "^4.0.1" + "@libp2p/interface" "^1.1.2" + "@libp2p/interface-internal" "^1.0.7" + "@libp2p/peer-id" "^4.0.5" + "@libp2p/pubsub" "^9.0.8" + "@multiformats/multiaddr" "^12.1.14" + denque "^2.1.0" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + protobufjs "^7.2.6" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@chainsafe/libp2p-noise@^14.0.0": + version "14.1.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-14.1.0.tgz" + integrity sha512-uHmptoxgMsfDIP7cQMQ4Zp9+y27oON5+gloBLXi+7EJpMhyvo7tjafUxRILwLofzeAtfaF3ZHraoXRFUSbhK2Q== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^3.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-byte-stream "^1.0.0" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-noise@^15.0.0": + version "15.0.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.0.0.tgz" + integrity sha512-O8Y/WVU4J/qrnG72jwVhbmdXiBzv1dT9B3PMClCRmZ9z/5vVPEGRVXE/SVYeGF3bNuBTLoh+F+GaKG/9UHlMhg== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-yamux@^6.0.1": + version "6.0.2" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz" + integrity sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + get-iterator "^2.0.1" + it-foreach "^2.0.6" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + uint8arraylist "^2.4.8" + +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@helia/block-brokers@^1.0.0", "@helia/block-brokers@~1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@helia/block-brokers/-/block-brokers-1.0.0.tgz" + integrity sha512-VP9KDj6fNT1FKk/vWjDzk8eYyVclxHFQaOLI0+rvifg+w8X+atCa/v2JKzZzbW6BX3/dxcn/mZz+ZHgdmuQ1qg== + dependencies: + "@helia/interface" "^3.0.1" + "@libp2p/interface" "^1.1.1" + any-signal "^4.1.1" + interface-blockstore "^5.2.7" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + it-filter "^3.0.4" + it-foreach "^2.0.6" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +"@helia/delegated-routing-v1-http-api-client@^1.1.0": + version "1.1.2" + resolved "https://registry.npmjs.org/@helia/delegated-routing-v1-http-api-client/-/delegated-routing-v1-http-api-client-1.1.2.tgz" + integrity sha512-u+sVdOxFieusZh/AxC8c0lU1micWfAosju7A80n62rdJ1fr1lclkhhrlfaKWIgVOq+pwonEzoOE7QgnTL22tYw== + dependencies: + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.3" + "@multiformats/multiaddr" "^12.1.3" + any-signal "^4.1.1" + browser-readablestream-to-it "^2.0.3" + ipns "^7.0.1" + it-first "^3.0.3" + it-map "^3.0.4" + it-ndjson "^1.0.4" + multiformats "^12.1.1" + p-defer "^4.0.0" + p-queue "^7.3.4" + uint8arrays "^4.0.6" + +"@helia/interface@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@helia/interface/-/interface-3.0.1.tgz" + integrity sha512-ibaiN0InfFVf8TNOKK+wzoLqlrWx/Crk/yY5o+DNRvgI4fdaJofHEaSyDvFR/amTVhdFHnOK+3Mbh+jGktWapQ== + dependencies: + "@libp2p/interface" "^1.1.1" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + multiformats "^13.0.0" + progress-events "^1.0.0" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.6": + version "9.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz" + integrity sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-json@^10.0.1": + version "10.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.2.0.tgz" + integrity sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-pb@^4.0.3": + version "4.1.0" + resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.0.tgz" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@libp2p/autonat@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/autonat/-/autonat-1.0.12.tgz" + integrity sha512-x4wb2weNY6zLkjEONHytfLFxNNZ7yTCZB/cFk2Dd5Kmg9W0PkefWjcrdDZdHJt4s2JwVFFkmTtxsvJBRlrtTQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/bootstrap@^10.0.12", "@libp2p/bootstrap@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.0.15.tgz" + integrity sha512-5GLppn6AW1CVHnTHnAkdtuOeVmB2HOGi65SxKLW0GBtS8zsuiuedtolbIN1mkPFsshYUhWMcVOcxNQn4tWJKMw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + +"@libp2p/circuit-relay-v2@^1.0.12", "@libp2p/circuit-relay-v2@^1.0.2": + version "1.0.15" + resolved "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.0.15.tgz" + integrity sha512-sOWIfiR4GWDDECCalyTZBc0qkSy1cQnM1B78eXNRVEq10EGEZ4/5qd0/Y3gWwrjGHWdMdq/4A+gHczzxa0kLVA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + it-protobuf-stream "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-retry "^6.2.0" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/crypto@^2.0.3": + version "2.0.8" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz" + integrity sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA== + dependencies: + "@libp2p/interface" "^0.1.6" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^12.0.1" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.6" + +"@libp2p/crypto@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^3.0.2": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^4.0.0", "@libp2p/crypto@^4.0.1", "@libp2p/crypto@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.2.tgz" + integrity sha512-zdFnnP2dA3X/xqRyJus+5rgCrp7JHFh+C8hA+DckXqp+ayiRMyLnKKPXmSzTKJSsIABMW2pcUFU+yCeDSgiSQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@noble/curves" "^1.3.0" + "@noble/hashes" "^1.3.3" + asn1js "^3.0.5" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/dcutr@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.0.12.tgz" + integrity sha512-2fpk2UUpcsVF/oiBymLMvbyBnR3Zma1cdv/HBMLNO2R0SpMYIHV9RmLJM4PVNyTaVGWul0NOQqBteRFfstTMmA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/identify@^1.0.1": + version "1.0.14" + resolved "https://registry.npmjs.org/@libp2p/identify/-/identify-1.0.14.tgz" + integrity sha512-615aa4TPtzxUNb24yzxyFdu5/x+3Ge2BD/Ob4RN1PnT+haFQqgbcT2RJfqbyvuo7gzxVEGamqh5uYaChqAQ4IA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + wherearewe "^2.0.1" + +"@libp2p/interface-internal@^1.0.7", "@libp2p/interface-internal@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.0.8.tgz" + integrity sha512-NkUBnqzAAWDcg9n4uUtEpbtHg0gZjLhdBTwqJWkWuTujaCEz0xk5FfXBXgWqGEMIZAN73VX8/hLQCeigk3gUlg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@multiformats/multiaddr" "^12.1.14" + uint8arraylist "^2.4.8" + +"@libp2p/interface@^0.1.2", "@libp2p/interface@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz" + integrity sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag== + dependencies: + "@multiformats/multiaddr" "^12.1.5" + abortable-iterator "^5.0.1" + it-pushable "^3.2.0" + it-stream-types "^2.0.1" + multiformats "^12.0.1" + p-defer "^4.0.0" + race-signal "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface@^1.0.0", "@libp2p/interface@^1.1.0", "@libp2p/interface@^1.1.1", "@libp2p/interface@^1.1.2", "@libp2p/interface@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-1.1.3.tgz" + integrity sha512-id22Ve5acg6CM0jjL8s9cyEaBYWn7z1R+1gy75RpHi0qgW15ifozwi0oFSTGLVA5XzRnNzioDLj+ZP6QwvhIVQ== + dependencies: + "@multiformats/multiaddr" "^12.1.14" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/kad-dht@^12.0.2": + version "12.0.7" + resolved "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.0.7.tgz" + integrity sha512-VmjTkUwLEsvev5Ld3LkHZCFoGhuPpyWjlkUomNj7eRAemsHM47fbr7O5fi7bObpEzlpwsbipA8cDLsdRe+9QDQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + any-signal "^4.1.1" + hashlru "^2.3.0" + interface-datastore "^8.2.10" + it-drain "^3.0.5" + it-length "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-take "^3.0.4" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-event "^6.0.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/keychain@^4.0.2": + version "4.0.8" + resolved "https://registry.npmjs.org/@libp2p/keychain/-/keychain-4.0.8.tgz" + integrity sha512-u4HD+HxfJTfW7G5+4NNsyIE8Cyex/XOsp4EREfk3Twhm7RgUdngFBMxwGxgR3XmWNzvZRknMzWJBXAXdW2azaw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + interface-datastore "^8.2.10" + merge-options "^3.0.4" + multiformats "^13.0.1" + sanitize-filename "^1.6.3" + uint8arrays "^5.0.1" + +"@libp2p/logger@^3.0.2": + version "3.1.0" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz" + integrity sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ== + dependencies: + "@libp2p/interface" "^0.1.6" + "@multiformats/multiaddr" "^12.1.5" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^12.0.1" + +"@libp2p/logger@^4.0.0", "@libp2p/logger@^4.0.1", "@libp2p/logger@^4.0.3", "@libp2p/logger@^4.0.4", "@libp2p/logger@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.6.tgz" + integrity sha512-ofTE3kDivBJnUSoX68nOeg1EuAnIE8oUjUnQnuKrxH+nh0JtjTcvwwIzjmm4nApwb4xj2dgPSDvU38Mjmu3TvA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@multiformats/multiaddr" "^12.1.14" + debug "^4.3.4" + interface-datastore "^8.2.10" + multiformats "^13.0.1" + +"@libp2p/mdns@^10.0.12", "@libp2p/mdns@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.0.15.tgz" + integrity sha512-06Vf0ok0t7mmtwxOGUvYA4LPkzmOPudIHcRNfBztfKy6Ya211pm3z4isM526yoYeneQaD7pQzA63x/Go3SELqA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/multicast-dns" "^7.2.4" + dns-packet "^5.6.1" + multicast-dns "^7.2.5" + +"@libp2p/mplex@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mplex/-/mplex-10.0.15.tgz" + integrity sha512-OnmWkK5cMW6qyuJ3SCWjM1FNs7ZBAlqASC0FrRNel+bV5AJHrqAjA1kkBrlPVPe5vbehWqdPpkHqT7CzlrxAtA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/multistream-select@^5.1.3": + version "5.1.3" + resolved "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.3.tgz" + integrity sha512-vKD4FESYBHxLIL0gQ+WtUktsT3SrUBj2GFOESbexj98cTXquKcQUM6XTMrLRS8wWf77czZKpuKwwMxE+VsU2kw== + dependencies: + "@libp2p/interface" "^1.1.3" + it-length-prefixed "^9.0.4" + it-length-prefixed-stream "^1.1.6" + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-collections@^5.1.6": + version "5.1.6" + resolved "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.1.6.tgz" + integrity sha512-n2Oav1GehdEToeALvSytuYw2wiwzMvbOUxyAFUfF6oqmZgNe9P8cOkyr0w2P0p0hXjdcIeIfDYeTvY4MeHZnjw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + +"@libp2p/peer-id-factory@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.0.6.tgz" + integrity sha512-dj5gdPvh3p4n4ltvZF508LA2hvC5COKP6BVFzcUBUy1yp81srSkX6QuV69W61pYfe5VxhVvyjhVkHIZ2l7wB7Q== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-id@^3.0.2", "@libp2p/peer-id@^3.0.3": + version "3.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz" + integrity sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw== + dependencies: + "@libp2p/interface" "^0.1.6" + multiformats "^12.0.1" + uint8arrays "^4.0.6" + +"@libp2p/peer-id@^4.0.0", "@libp2p/peer-id@^4.0.3", "@libp2p/peer-id@^4.0.5", "@libp2p/peer-id@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.6.tgz" + integrity sha512-hAj2bdN+s/cCkiaLthuL412DqLeYZ83yRmbjZfHHJ8d3sV/M7NAxu2v8Zx+3KurFF8ICMoD7bb34IXHo7FH3kw== + dependencies: + "@libp2p/interface" "^1.1.3" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +"@libp2p/peer-record@^7.0.9": + version "7.0.9" + resolved "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.9.tgz" + integrity sha512-uI5kE8K6/CWamxV9NK1p7mdYoWIf1AP+eWWZd+1opa/R7zT/QYmtAc/wWE7uFhfRsB736u9GkiPwU66LzA0reQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + protons-runtime "^5.4.0" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-store@^10.0.10": + version "10.0.10" + resolved "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.0.10.tgz" + integrity sha512-b5SUUtioxJMWaBPU2/UfS76q1DXkDmTkpTBogiKc5BTM6g5AqIA4wQXeiLB5EopxEUnSYSyeFxwdoeVDBkz19g== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + interface-datastore "^8.2.10" + it-all "^3.0.4" + mortice "^3.0.4" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/ping@^1.0.1": + version "1.0.11" + resolved "https://registry.npmjs.org/@libp2p/ping/-/ping-1.0.11.tgz" + integrity sha512-aymP1dNDlYYVxhFk71df0M+3OWozZwIq5lev0Z9JJQrXzWLRLw9D2C3oDN9zfeBpVmBE0bnrb2h+fYGb2POXHw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-pipe "^3.0.1" + uint8arrays "^5.0.1" + +"@libp2p/pubsub@^9.0.8": + version "9.0.10" + resolved "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.10.tgz" + integrity sha512-oYvDM14NNXyFLnrVVQISrWZE1DZSOfHd7tQW/M+/Pl2iICsrMuj/ViZ8BFjGE2RkJflHXKGV5bdEqQNQMIoJ/g== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + p-queue "^8.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/tcp@^9.0.12", "@libp2p/tcp@^9.0.2": + version "9.0.15" + resolved "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.0.15.tgz" + integrity sha512-q9huXxkvbiCXyRNVjS12ProBpnHUIKhaq+53UQGtvL/hN8KyD9lIOqziNbh8U3mfbaZZAbhxPOyhLKmbdxrsyQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + stream-to-it "^0.2.4" + +"@libp2p/upnp-nat@^1.0.1": + version "1.0.13" + resolved "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.0.13.tgz" + integrity sha512-p2RjXu3Vc/kKdPDqxPtTea/ecLDy2tsJ+9njccOdw+FBeFrr2N+Aoge1dMzHXogWxGOrnyyjd04aAliiLPkENw== + dependencies: + "@achingbrain/nat-port-mapper" "^1.0.13" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + wherearewe "^2.0.1" + +"@libp2p/utils@^5.0.0", "@libp2p/utils@^5.2.0", "@libp2p/utils@^5.2.5": + version "5.2.5" + resolved "https://registry.npmjs.org/@libp2p/utils/-/utils-5.2.5.tgz" + integrity sha512-oMUrBvEFGD/74I3W3AhpV3pLx8CeEhxCpoJ9a0BTetoJ+TbU5DxxcWJGvhoq3RfQiUvZtg0IwJWNaiJ6lB2sdA== + dependencies: + "@chainsafe/is-ip" "^2.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/logger" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + get-iterator "^2.0.1" + is-loopback-addr "^2.0.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + netmask "^2.0.2" + p-defer "^4.0.0" + race-event "^1.1.0" + race-signal "^1.0.2" + uint8arraylist "^2.4.8" + +"@libp2p/webrtc@^4.0.16", "@libp2p/webrtc@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-4.0.19.tgz" + integrity sha512-SeEvCkF2nExh5kTvzY8DzEAyeKP6F5oespBn8sfFFMJ0GEtrUxFgrFrT06suVFhkPSKIZ91wbiHxhV1JGO7t0Q== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + detect-browser "^5.3.0" + it-length-prefixed "^9.0.4" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + multihashes "^4.0.3" + node-datachannel "^0.5.3" + p-defer "^4.0.0" + p-event "^6.0.0" + p-timeout "^6.1.2" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + react-native-webrtc "^118.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/websockets@^8.0.12", "@libp2p/websockets@^8.0.2": + version "8.0.15" + resolved "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.0.15.tgz" + integrity sha512-TNhMrhdf+/sUam8SxpmUcoNxXlwq2F6YipdwBYo54HioFS1XIrR7VRqrhJot+Xz20JXV+k3IFMmBrg1Y/8vvBg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-to-uri" "^10.0.1" + "@types/ws" "^8.5.10" + it-ws "^6.1.1" + p-defer "^4.0.0" + wherearewe "^2.0.1" + ws "^8.16.0" + +"@libp2p/webtransport@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webtransport/-/webtransport-4.0.19.tgz" + integrity sha512-AOA3p3PfGYYxgSaVFfbagyWb5yRZMQD32XtG2D/NkMunOmBG1ZoZsbzRJeLLL+4FT7BMdwMlMYRwfSGm2txwvA== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@multiformats/mafmt@^12.1.6": + version "12.1.6" + resolved "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz" + integrity sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr-matcher@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.1.2.tgz" + integrity sha512-O7hO+TYsweMjNCqTYKYn8iki2GXA46mxmgqnsOb2Wpr6ca4dRGnPldWTai2WwTeZpQyRJ/7GE+N9zPTfP0xE+Q== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@multiformats/multiaddr" "^12.0.0" + multiformats "^13.0.0" + +"@multiformats/multiaddr-to-uri@^10.0.1": + version "10.0.1" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.0.1.tgz" + integrity sha512-RtOBRJucMCzINPytvt1y7tJ2jr4aSKJmv3DF7/C515RJO9+nu9sZHdsk9vn251OtN8k21rAGlIHESt/BSJWAnQ== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.0", "@multiformats/multiaddr@^12.1.14", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.1.5": + version "12.1.14" + resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.14.tgz" + integrity sha512-1C0Mo73chzu7pTzTquuKs5vUtw70jhqg1i6pUNznGb0WV6RFa6vyB+D697Os5+cLx+DiItrAY6VzMtlGQsMzYg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + dns-over-http-resolver "^3.0.2" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + +"@noble/curves@^1.1.0", "@noble/curves@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3", "@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@orbitdb/core@^2.0.1": + version "2.1.0" + resolved "https://registry.npmjs.org/@orbitdb/core/-/core-2.1.0.tgz" + integrity sha512-IjNPZrvZrFCoALF6owbWpdwn3rO6ekkurSA1Ccp5p2sgatJa3j2yCXN0qJpr6pistqwc9tZSKYsYmGUQ2bkEUw== + dependencies: + "@ipld/dag-cbor" "^9.0.6" + "@libp2p/crypto" "^3.0.2" + it-pipe "^3.0.1" + level "^8.0.0" + lru "^3.1.0" + multiformats "^12.1.3" + p-queue "^8.0.1" + timeout-abort-controller "^3.0.0" + uint8arrays "^5.0.0" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@react-native-community/cli-clean@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz" + integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + +"@react-native-community/cli-config@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.6.tgz" + integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz" + integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz" + integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== + dependencies: + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz" + integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== + dependencies: + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz" + integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.2.4" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-ios@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz" + integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-plugin-metro@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz" + integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== + +"@react-native-community/cli-server-api@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz" + integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== + dependencies: + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz" + integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.6.tgz" + integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.6.tgz" + integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== + dependencies: + "@react-native-community/cli-clean" "12.3.6" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-doctor" "12.3.6" + "@react-native-community/cli-hermes" "12.3.6" + "@react-native-community/cli-plugin-metro" "12.3.6" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-types" "12.3.6" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== + +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.17": + version "0.73.17" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz" + integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native/dev-middleware" "0.73.8" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" + +"@react-native/normalize-colors@^0.73.0", "@react-native/normalize-colors@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== + +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@types/dns-packet@*": + version "5.6.5" + resolved "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/multicast-dns@^7.2.4": + version "7.2.4" + resolved "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz" + integrity sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw== + dependencies: + "@types/dns-packet" "*" + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "20.11.20" + resolved "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== + dependencies: + undici-types "~5.26.4" + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/sinon@^17.0.3": + version "17.0.3" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz" + integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.5" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/ws@^8.2.2", "@types/ws@^8.5.10": + version "8.5.10" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@vascosantos/moving-average@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz" + integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortable-iterator@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz" + integrity sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^2.0.1" + +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-signal@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.10" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz" + integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.1" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz" + integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1, base64-js@^1.5.1, base64-js@1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blockstore-core@^4.0.0: + version "4.4.0" + resolved "https://registry.npmjs.org/blockstore-core/-/blockstore-core-4.4.0.tgz" + integrity sha512-tjOJAJMPWlqahqCjn5awLJz2eZeJnrGOBA0OInBFK69/FfPZbSID2t7s5jFcBRhGaglca56BzG4t5XOV3MPxOQ== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-merge "^3.0.3" + it-pushable "^3.2.3" + multiformats "^13.0.1" + +blockstore-level@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/blockstore-level/-/blockstore-level-1.1.8.tgz" + integrity sha512-8+NLeoyAQZzWIf9TWl0kC3x0JpJf6bts02K1fg8MCxgx/z/Leh4gVCzSGvYDuorHicOCVsyWv4+3ldlrnzRXoA== + dependencies: + blockstore-core "^4.0.0" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + level "^8.0.1" + multiformats "^13.0.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-readablestream-to-it@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz" + integrity sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg== + +browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0": + version "4.23.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +bson@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz" + integrity sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001587: + version "1.0.30001605" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz" + integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cborg@^4.0.0, cborg@^4.0.1, cborg@^4.0.3: + version "4.0.9" + resolved "https://registry.npmjs.org/cborg/-/cborg-4.0.9.tgz" + integrity sha512-xAuZbCDUOZxCe/ZJuIrnlG1Bk1R0qhwCXdnPYxVmqBSqm9M3BeE3G6Qoj5Zq+8epas36bT3vjiInDTJ6BVH6Rg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.36.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz" + integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + dependencies: + browserslist "^4.23.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +datastore-core@^9.0.0, datastore-core@^9.2.7: + version "9.2.8" + resolved "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.8.tgz" + integrity sha512-+S3rI6FSQphrGQZraYcCLeaVzCpDkNBYBk9a8QU8Kt+7xPAphNVA6a37kc6K9CQBppVOOmRaPBKU19fhHJLszg== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-datastore "^8.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-sort "^3.0.4" + it-take "^3.0.4" + +dayjs@^1.8.15: + version "1.11.10" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz" + integrity sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg== + dependencies: + execa "^7.1.1" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +delay@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz" + integrity sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== + dependencies: + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +dns-over-http-resolver@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.2.tgz" + integrity sha512-5batkHOjCkuAfrFa+IPmt3jyeZqLtSMfAo1HQp3hfwtzgUwHooecTFplnYC093u5oRNL4CQHCXh3OfER7+vWrA== + dependencies: + debug "^4.3.4" + receptacle "^1.3.2" + +dns-packet@^5.2.2, dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.728" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz" + integrity sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +envinfo@^7.10.0: + version "7.11.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz" + integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +event-target-shim@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz" + integrity sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: + version "4.3.6" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz" + integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== + dependencies: + strnum "^1.0.5" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@^0.206.0, flow-parser@0.*: + version "0.206.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz" + integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== + +freeport-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz" + integrity sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-iterator@^2.0.0, get-iterator@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz" + integrity sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob@^7.1.1, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +helia@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/helia/-/helia-3.0.1.tgz" + integrity sha512-Uf9h2RQuiyZxQkBXmbV9HF9/ILSWellXDuSk9Qwn+hRwtlIuEmaHW2HIRHXoaUF9A+WBPplLmiShaYtbaOgbMQ== + dependencies: + "@chainsafe/libp2p-gossipsub" "^11.0.0" + "@chainsafe/libp2p-noise" "^14.0.0" + "@chainsafe/libp2p-yamux" "^6.0.1" + "@helia/block-brokers" "~1.0.0" + "@helia/delegated-routing-v1-http-api-client" "^1.1.0" + "@helia/interface" "^3.0.1" + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.1" + "@ipld/dag-pb" "^4.0.3" + "@libp2p/autonat" "^1.0.1" + "@libp2p/bootstrap" "^10.0.2" + "@libp2p/circuit-relay-v2" "^1.0.2" + "@libp2p/dcutr" "^1.0.1" + "@libp2p/identify" "^1.0.1" + "@libp2p/interface" "^1.1.1" + "@libp2p/kad-dht" "^12.0.2" + "@libp2p/keychain" "^4.0.2" + "@libp2p/logger" "^4.0.4" + "@libp2p/mdns" "^10.0.2" + "@libp2p/mplex" "^10.0.2" + "@libp2p/ping" "^1.0.1" + "@libp2p/tcp" "^9.0.2" + "@libp2p/upnp-nat" "^1.0.1" + "@libp2p/utils" "^5.2.0" + "@libp2p/webrtc" "^4.0.3" + "@libp2p/websockets" "^8.0.2" + "@libp2p/webtransport" "^4.0.3" + blockstore-core "^4.0.0" + cborg "^4.0.3" + datastore-core "^9.0.0" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipns "^8.0.0" + it-drain "^3.0.5" + libp2p "^1.0.3" + mortice "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" + integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" + integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== + dependencies: + hermes-estree "0.20.1" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interface-blockstore@^5.0.0, interface-blockstore@^5.2.7: + version "5.2.10" + resolved "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.10.tgz" + integrity sha512-9K48hTvBCGsKVD3pF4ILgDcf+W2P/gq0oxLcsHGB6E6W6nDutYkzR+7k7bCs9REHrBEfKzcVDEKieiuNM9WRZg== + dependencies: + interface-store "^5.0.0" + multiformats "^13.0.1" + +interface-datastore@^8.0.0, interface-datastore@^8.1.0, interface-datastore@^8.2.0, interface-datastore@^8.2.10, interface-datastore@^8.2.2: + version "8.2.11" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.11.tgz" + integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.2" + +interface-store@^5.0.0, interface-store@^5.1.0, interface-store@^5.1.5: + version "5.1.8" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== + +ipaddr.js@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +ipfs-bitswap@^20.0.0: + version "20.0.2" + resolved "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-20.0.2.tgz" + integrity sha512-B/pPf0Dvnp/TzZ/jk7IElxCH+MwxTCe8YvyQzsQ4i8RhUh0IwyyaHPy0LSVGuJpADNjaaZQffe6DSxwmRKF7uA== + dependencies: + "@libp2p/interface" "^1.0.0" + "@libp2p/logger" "^4.0.0" + "@libp2p/utils" "^5.0.0" + "@multiformats/multiaddr" "^12.1.0" + "@vascosantos/moving-average" "^1.1.0" + any-signal "^4.1.1" + events "^3.3.0" + interface-blockstore "^5.0.0" + interface-store "^5.1.0" + it-drain "^3.0.5" + it-foreach "^2.0.2" + it-length-prefixed "^9.0.0" + it-map "^3.0.2" + it-pipe "^3.0.1" + it-take "^3.0.1" + just-debounce-it "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + protons-runtime "^5.0.0" + timeout-abort-controller "^3.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + varint "^6.0.0" + varint-decoder "^1.0.0" + +ipns@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/ipns/-/ipns-7.0.2.tgz" + integrity sha512-jsrIgsCmFZL/kATuO+4N5Oy3b4xhnO42N39nCLyhhC8NM+SZIxTmZmUSDU0GoI8Vn0X/Zy2Sj3Lxbhg3UlVMUA== + dependencies: + "@libp2p/crypto" "^2.0.3" + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.2" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^12.0.1" + protons-runtime "^5.0.0" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +ipns@^8.0.0: + version "8.0.4" + resolved "https://registry.npmjs.org/ipns/-/ipns-8.0.4.tgz" + integrity sha512-iBrlCBm5fsMJW0BvVNwXLOadsyeTc9fz9PJAxJ3YggXgrx5T6lfRgVfTQsnYeByRADGfpWGOvW6zqnu8a3dcYw== + dependencies: + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.1.0" + "@libp2p/logger" "^4.0.3" + "@libp2p/peer-id" "^4.0.3" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^13.0.0" + protons-runtime "^5.2.1" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-loopback-addr@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz" + integrity sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg== + +is-network-error@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz" + integrity sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +it-all@^3.0.0, it-all@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz" + integrity sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ== + +it-byte-stream@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.8.tgz" + integrity sha512-H32LbN6kdX8HXqH68z5uivfkVYJEi5tIPRwIQNR5Qsx3uoDRhYdBRHzf3NOVAf6vqulFUSQLuU+Y0rs/QeWn3A== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.1" + uint8arraylist "^2.4.1" + +it-drain@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz" + integrity sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA== + +it-filter@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz" + integrity sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g== + dependencies: + it-peekable "^3.0.0" + +it-first@^3.0.1, it-first@^3.0.3, it-first@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-first/-/it-first-3.0.4.tgz" + integrity sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg== + +it-foreach@^2.0.2, it-foreach@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-foreach/-/it-foreach-2.0.6.tgz" + integrity sha512-OVosBHJsdXpAyeFlCbe3IGZia+65UykyAznakNsKXK+b99dbhuu/mOnXxTadDEo1GWhKx+WA8RNanKkMf07zQw== + dependencies: + it-peekable "^3.0.0" + +it-length-prefixed-stream@^1.0.0, it-length-prefixed-stream@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.6.tgz" + integrity sha512-MEby4r8n3XIYXjaWT3DweCuhBPQmFVT8RdI1BNjYQ5gelbFD3NLdjYpTI3TVmSEs/aJfgpfVFZzy6iP7OCxIgw== + dependencies: + it-byte-stream "^1.0.0" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.4.1" + +it-length-prefixed@^9.0.0, it-length-prefixed@^9.0.1, it-length-prefixed@^9.0.4: + version "9.0.4" + resolved "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.4.tgz" + integrity sha512-lz28fykbG0jq7s5XtvlzGxO5BeSOw6ikymkRllxjL21V5VKLcvB4pHr9wPvEnsAJ2et1xpOk3BRTMq9XrhgKsg== + dependencies: + err-code "^3.0.1" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^5.0.1" + +it-length@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-length/-/it-length-3.0.4.tgz" + integrity sha512-RS3thYkvqtWksrV7SaAnTv+pgY7ozpS17HlRvWvcnoRjVyNJMuffdCkIKpKNPTq5uZw9zVnkVKLO077pJn5Yhg== + +it-map@^3.0.2, it-map@^3.0.4, it-map@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz" + integrity sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w== + dependencies: + it-peekable "^3.0.0" + +it-merge@^3.0.0, it-merge@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz" + integrity sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA== + dependencies: + it-pushable "^3.2.0" + +it-ndjson@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/it-ndjson/-/it-ndjson-1.0.5.tgz" + integrity sha512-2UEROCo458dDu9dABKb9fvD34p2YL6SqV5EOXN8SysX2Fpx0MSN69EiBmLLDDYSpQlrW0I5j3Tm8DtEIL5NsIw== + +it-pair@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz" + integrity sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + +it-parallel@^3.0.6: + version "3.0.6" + resolved "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.6.tgz" + integrity sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A== + dependencies: + p-defer "^4.0.0" + +it-peekable@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.3.tgz" + integrity sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w== + +it-pipe@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz" + integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== + dependencies: + it-merge "^3.0.0" + it-pushable "^3.1.2" + it-stream-types "^2.0.1" + +it-protobuf-stream@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.2.tgz" + integrity sha512-epZBuG+7cPaTxCR/Lf3ApshBdA9qfflGPQLfLLrp9VQ0w67Z2xo4H+SLLetav57/29oPtAXwVaoyemg99JOWzA== + dependencies: + it-length-prefixed-stream "^1.0.0" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.1" + +it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + +it-reader@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz" + integrity sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg== + dependencies: + it-stream-types "^2.0.1" + uint8arraylist "^2.0.0" + +it-sort@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-sort/-/it-sort-3.0.4.tgz" + integrity sha512-tvnC93JZZWjX4UxALy0asow0dzXabkoaRbrPJKClTKhNCqw4gzHr+H5axf1gohcthedRRkqd/ae+wl7WqoxFhw== + dependencies: + it-all "^3.0.0" + +it-stream-types@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz" + integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== + +it-take@^3.0.1, it-take@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz" + integrity sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA== + +it-ws@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/it-ws/-/it-ws-6.1.1.tgz" + integrity sha512-oyk4eCeZto2lzWDnJOa3j1S2M+VOGKUh8isEf94ySoaL6IFlyie0T4P9E0ZUaIvX8LyJxYFHFKCt8Zk7Sm/XPQ== + dependencies: + "@types/ws" "^8.2.2" + event-iterator "^2.0.0" + it-stream-types "^2.0.1" + uint8arrays "^5.0.0" + ws "^8.4.0" + +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.2.1: + version "17.12.3" + resolved "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz" + integrity sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +just-debounce-it@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz" + integrity sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0, level@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/level/-/level-8.0.1.tgz" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +libp2p@^1.0.3, libp2p@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/libp2p/-/libp2p-1.2.3.tgz" + integrity sha512-eBPPliHno1pmMWfi+YR40YKc+XBvhiC3G583xy0dTCG3X+a+r8DpSEyd72dwPvyohY4k58MDcdi6zwjTRHnTIw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/logger" "^4.0.6" + "@libp2p/multistream-select" "^5.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/peer-store" "^10.0.10" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + datastore-core "^9.2.7" + interface-datastore "^8.2.10" + it-merge "^3.0.3" + it-parallel "^3.0.6" + merge-options "^3.0.4" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz" + integrity sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ== + dependencies: + inherits "^2.0.1" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-transformer@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.8.tgz" + integrity sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.20.1" + nullthrows "^1.1.1" + +metro-cache-key@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.8.tgz" + integrity sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA== + +metro-cache@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.8.tgz" + integrity sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ== + dependencies: + metro-core "0.80.8" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.8.tgz" + integrity sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.8" + metro-cache "0.80.8" + metro-core "0.80.8" + metro-runtime "0.80.8" + +metro-core@^0.80.3, metro-core@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.8.tgz" + integrity sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.8" + +metro-file-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.8.tgz" + integrity sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.8.tgz" + integrity sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.8.tgz" + integrity sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ== + +metro-runtime@^0.80.3, metro-runtime@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.8.tgz" + integrity sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.8.tgz" + integrity sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.8" + nullthrows "^1.1.1" + ob1 "0.80.8" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.8.tgz" + integrity sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.8" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.8.tgz" + integrity sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.8.tgz" + integrity sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.8" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-minify-terser "0.80.8" + metro-source-map "0.80.8" + metro-transform-plugins "0.80.8" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.8.tgz" + integrity sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.20.1" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-config "0.80.8" + metro-core "0.80.8" + metro-file-map "0.80.8" + metro-resolver "0.80.8" + metro-runtime "0.80.8" + metro-source-map "0.80.8" + metro-symbolicate "0.80.8" + metro-transform-plugins "0.80.8" + metro-transform-worker "0.80.8" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +mortice@^3.0.1, mortice@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz" + integrity sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ== + dependencies: + observable-webworkers "^2.0.1" + p-queue "^8.0.1" + p-timeout "^6.0.0" + +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +multiformats@^12.0.1, multiformats@^12.1.1: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^12.1.3: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.0.1, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abi@^3.3.0: + version "3.56.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz" + integrity sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q== + dependencies: + semver "^7.3.5" + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-datachannel@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.5.3.tgz" + integrity sha512-aOp+6P2TC6+u36L06yeUAYpBp5FqpDGjIbIJQvC5AY9HX9ZVoqUO3ysLlswnpQRM7wJt8LhBuHxiPkLoM5xEUA== + dependencies: + node-domexception "^2.0.1" + prebuild-install "^7.0.1" + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.1.tgz" + integrity sha512-M85rnSC7WQ7wnfQTARPT4LrK7nwCHLdDFOCcItZMhTQjyCebJH8GciKqYJNgaOFZs9nFmTmd/VMyi3OW5jA47w== + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.8.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.8.tgz" + integrity sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +observable-webworkers@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz" + integrity sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-defer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz" + integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== + +p-event@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-6.0.0.tgz" + integrity sha512-Xbfxd0CfZmHLGKXH32k1JKjQYX6Rkv0UtQdaFJ8OyNcf+c0oWCeXHc1C4CX/IESZLmcvfPa5aFIO/vCr5gqtag== + dependencies: + p-timeout "^6.1.2" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-queue@^7.3.4: + version "7.4.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + +p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +p-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + +p-timeout@^6.0.0, p-timeout@^6.1.1, p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +prebuild-install@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +private-ip@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/private-ip/-/private-ip-3.0.2.tgz" + integrity sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + ip-regex "^5.0.0" + ipaddr.js "^2.1.0" + netmask "^2.0.2" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress-events@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/progress-events/-/progress-events-1.0.0.tgz" + integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^7.2.6: + version "7.2.6" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protons-runtime@^5.0.0, protons-runtime@^5.2.1, protons-runtime@^5.4.0: + version "5.4.0" + resolved "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz" + integrity sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pvtsutils@^1.3.2: + version "1.3.5" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +race-event@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/race-event/-/race-event-1.2.0.tgz" + integrity sha512-7EvAjTu9uuKa03Jky8yfSy6/SnnMTh6nouNmdeWv9b0dT8eDZC5ylx30cOR9YO9otQorVjjkIuSHQ5Ml/bKwMw== + +race-signal@^1.0.0, race-signal@^1.0.1, race-signal@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/race-signal/-/race-signal-1.0.2.tgz" + integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-devtools-core@^4.27.7: + version "4.28.5" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz" + integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-native-webrtc@^118.0.1: + version "118.0.1" + resolved "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-118.0.1.tgz" + integrity sha512-gjbBIV/0VyplavbOsQw9mpVJ4WHTEYZzi4PN7Oz18p2Ucsc5yEVUhtN5NQep8w6VDH1DNzuXXBPq5uJq9uqbMA== + dependencies: + base64-js "1.5.1" + debug "4.3.4" + event-target-shim "6.0.2" + +react-native@*, react-native@>=0.60.0: + version "0.73.6" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.73.6.tgz" + integrity sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.17" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +"react@^16.0.0 || ^17.0.0 || ^18.0.0", react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sax@>=0.6.0: + version "1.3.0" + resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5, semver@^7.5.2: + version "7.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map-support@^0.5.16, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-to-it@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^5.0.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terser@^5.15.0: + version "5.30.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz" + integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + +timestamp-nano@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/timestamp-nano/-/timestamp-nano-1.0.1.tgz" + integrity sha512-4oGOVZWTu5sl89PtCDnhQBSt7/vL1zVEwAfxH1p49JhTosxzVQWYBYFRFZ8nJmo0G6f824iyP/44BFAwIoKvIA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +tslib@^2.0.1, tslib@^2.4.0, tslib@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +uint8-varint@^2.0.1, uint8-varint@^2.0.2, uint8-varint@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.4.1, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.8.tgz" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.6: + version "4.0.10" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.2.tgz" + integrity sha512-S0GaeR+orZt7LaqzTRs4ZP8QqzAauJ+0d4xvP2lJTA99jIkKsE2FgDs4tGF/K/z5O9I/2W5Yvrh7IuqNeYH+0Q== + dependencies: + multiformats "^13.0.0" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +varint-decoder@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/varint-decoder/-/varint-decoder-1.0.0.tgz" + integrity sha512-JkOvdztASWGUAsXshCFHrB9f6AgR2Q8W08CEyJ+43b1qtFocmI8Sp1R/M0E/hDOY2FzVIqk63tOYLgDYWuJ7IQ== + dependencies: + varint "^5.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.0.0: + version "3.6.20" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/wherearewe/-/wherearewe-2.0.1.tgz" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.0" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^7.5.1: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.16.0, ws@^8.4.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xml2js@^0.6.0, xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1: + version "2.4.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/huggingface_scraper/process_manifest.js b/huggingface_scraper/process_manifest.js index cf8d28c..1d09ecb 100644 --- a/huggingface_scraper/process_manifest.js +++ b/huggingface_scraper/process_manifest.js @@ -9,69 +9,175 @@ import path, { relative } from 'path' const cwd = path.dirname(new URL(import.meta.url).pathname) -//let opts = {} -//opts["config"] = "/storage/swissknife/hallucinate/swissknife/master.toml" - -//let config = requireConfig(opts) - export class process_manifest { - constructor(){ + constructor(s3_creds, hf_creds, mysql_creds, local_model_path, ipfs_path, collection_path){ + this.env = process.env + if (s3_creds != undefined){ + process.env.s3_creds = JSON.stringify(s3_creds) + this.s3_creds = s3_creds + } + if (hf_creds != undefined){ + process.env.hf_creds = JSON.stringify(hf_creds) + this.hf_creds = hf_creds + } + if (mysql_creds != undefined){ + process.env.mysql_creds = JSON.stringify(mysql_creds) + this.mysql_creds = mysql_creds + } + if (local_model_path != undefined){ + process.env.local_model_path = local_model_path + this.local_model_path = local_model_path + } + if (ipfs_path != undefined){ + process.env.ipfs_path = ipfs_path + this.ipfs_path = ipfs_path + } + if (collection_path != undefined){ + process.env.collection_path = collection_path + this.collection_path = collection_path + } this.manifest = {} this.generate = {} + this.build_path = "" + this.dest_path = "" + if (!fs.existsSync(this.collection_path)){ + fs.writeFileSync(this.collection_path, "{}") + } + if(!fs.existsSync(this.local_model_path)){ + fs.mkdirSync(this.local_model_path) + } + if(!fs.existsSync(this.ipfs_path)){ + fs.mkdirSync(this.ipfs_path) + } + if(!fs.existsSync("/tmp/build")){ + fs.mkdirSync("/tmp/build") + } + } + + process_prompted_manifest(manifest, folder){ + // console.log("process_manifest") + // console.log("main(generate, manifest, folder)") + // console.log("manifest: ", manifest) + // console.log("folder: ", folder) + let collection_path = this.collection_path + this.manifest = manifest + let generate = manifest + this.folder = folder + let local_model_path = process.env.local_model_path + let build_path + let dest_path + let s3_creds = this.s3_creds + let hf_creds = this.hf_creds + let mysql_creds = this.mysql_creds + delete manifest["s3_creds"]; + delete manifest["hf_creds"]; + delete manifest["mysql_creds"]; + generate.s3_creds = s3_creds + generate.hf_creds = hf_creds + generate.mysql_creds = mysql_creds + + console.log("local_model_path: ", local_model_path) + console.log("process.env.local_model_path: ", process.env.local_model_path) + + if(manifest.metadata.quantization != undefined && !manifest.id.includes(manifest.metadata.quantization)){ + build_path = path.join("/tmp/build/", manifest.id + "-" + manifest.metadata.quantization) + generate.build_path = path.join("/tmp/build/", manifest.id + "-" + manifest.metadata.quantization) + } + else{ + build_path = path.join("/tmp/build/" , manifest.id) + generate.build_path = path.join("/tmp/build/" , manifest.id) + } + if (manifest.format != undefined){ + //this.build_path = this.build_path + "@" + this.generate.format + } + build_path = path.resolve(build_path) + generate.build_path = path.resolve(generate.build_path) + if(!fs.existsSync(build_path)){ + fs.mkdirSync(build_path) + } + + generate.destPath = local_model_path + manifest.id + this.generrate = generate + let manifest_file = path.join(build_path, "manifest.json") + let collection = load_local_collection(this.collection_path) + this.ipfsCluster = new ipfsClusterStatus(collection) + if (Object.keys(generate).includes("build_path")){ + build_path = generate.build_path + } + if(Object.keys(generate).includes("destPath")){ + dest_path = generate.destPath + } + fs.writeFileSync(path.join(build_path, "manifest.json"), JSON.stringify(manifest)) + let file_dict = package_model_data(generate, manifest, collection) + delete manifest["s3_creds"]; + delete manifest["hf_creds"]; + delete manifest["mysql_creds"]; + console.log("process_prompted_manifest") + console.log("generate: ", generate) + manifest.folderData = generate.folderData + //delete this.manifest.skill + fs.writeFileSync(path.join(build_path, "manifest.json"), JSON.stringify(manifest)) + let cache = export_cache_locations(manifest, generate, file_dict) + manifest.folderData = folder_data(generate, manifest, build_path) + fs.writeFileSync(path.join(build_path, "manifest.json"), JSON.stringify(manifest)) + let manifest_data = upload_manifest_files(manifest, generate, local_model_path, this.ipfsCluster) + manifest.folderData = folder_data(generate, manifest, dest_path) + fs.writeFileSync(path.join(dest_path, "manifest.json"), JSON.stringify(manifest)) + let new_collection = update_collection(manifest, generate, manifest_data, collection_path) + fs.writeFileSync(path.join(dest_path, "manifest.json"), JSON.stringify(manifest)) + this.collection = collection + return this } - __init__(self){ - self = {} - self.manifest = {} - self.generate = {} - - //self.pinset = get_pinset() - return self - } - + main(generate, manifest, folder){ - let self = this - let collection_path = process.env.local_path - self.generate = generate - self.manifest = manifest - self.folder = folder + console.log("process_manifest") + console.log("main(generate, manifest, folder)") + console.log("generate: ", generate) + console.log("manifest: ", manifest) + console.log("folder: ", folder) + let collection_path = this.collection_path + this.generate = generate + this.manifest = manifest + this.folder = folder if(generate.quantization != undefined && !generate.id.includes(generate.quantization)){ - self.build_path = "/tmp/build/" + generate.id + "-" + generate.quantization + this.build_path = "/tmp/build/" + generate.id + "-" + generate.quantization } else{ - self.build_path = "/tmp/build/" + generate.id + this.build_path = "/tmp/build/" + generate.id } if (generate.format != undefined){ - //self.build_path = self.build_path + "@" + self.generate.format + //this.build_path = this.build_path + "@" + this.generate.format } - self.build_path = path.resolve(self.build_path) - if(!fs.existsSync(self.build_path)){ - fs.mkdirSync(self.build_path) + this.build_path = path.resolve(this.build_path) + if(!fs.existsSync(this.build_path)){ + fs.mkdirSync(this.build_path) } - let manifest_file = path.join(self.build_path, "manifest.json") + let manifest_file = path.join(this.build_path, "manifest.json") let collection collection = load_local_collection(collection_path) - self.ipfsCluster = new ipfsClusterStatus(collection) - fs.writeFileSync(path.join(self.build_path, "manifest.json"), JSON.stringify(self.manifest)) - let file_dict = package_model_data(self.generate, self.manifest, collection) + this.ipfsCluster = new ipfsClusterStatus(collection) + fs.writeFileSync(path.join(this.build_path, "manifest.json"), JSON.stringify(this.manifest)) + let file_dict = package_model_data(this.generate, this.manifest, collection) if (Object.keys(generate).includes("build_path")){ - self.build_path = generate.build_path + this.build_path = generate.build_path } if(Object.keys(generate).includes("destPath")){ - self.dest_path = generate.destPath - } - //delete self.manifest.skill - fs.writeFileSync(path.join(self.build_path, "manifest.json"), JSON.stringify(self.manifest)) - let cache = export_cache_locations(self.manifest, self.generate, file_dict) - manifest.folderData = folder_data(self.generate, self.manifest, self.build_path) - fs.writeFileSync(path.join(self.build_path, "manifest.json"), JSON.stringify(self.manifest)) - let manifest_data = upload_manifest_files(self.manifest, self.generate, local_model_path, self.ipfsCluster) - manifest.folderData = folder_data(self.generate, self.manifest, self.dest_path) - fs.writeFileSync(path.join(self.dest_path, "manifest.json"), JSON.stringify(self.manifest)) - let new_collection = update_collection(self.manifest, self.generate, manifest_data, collection_path) - fs.writeFileSync(path.join(self.dest_path, "manifest.json"), JSON.stringify(self.manifest)) - self.collection = collection - return self + this.dest_path = generate.destPath + } + //delete this.manifest.skill + fs.writeFileSync(path.join(this.build_path, "manifest.json"), JSON.stringify(this.manifest)) + let cache = export_cache_locations(this.manifest, this.generate, file_dict) + manifest.cache = cache + manifest.folderData = folder_data(this.generate, this.manifest, this.build_path) + fs.writeFileSync(path.join(this.build_path, "manifest.json"), JSON.stringify(this.manifest)) + let manifest_data = upload_manifest_files(this.manifest, this.generate, local_model_path, this.ipfsCluster) + manifest.folderData = folder_data(this.generate, this.manifest, this.dest_path) + fs.writeFileSync(path.join(this.dest_path, "manifest.json"), JSON.stringify(this.manifest)) + let new_collection = update_collection(this.manifest, this.generate, manifest_data, collection_path) + fs.writeFileSync(path.join(this.dest_path, "manifest.json"), JSON.stringify(this.manifest)) + this.collection = collection + return this } } @@ -95,9 +201,29 @@ export function ipfsClusterStatus(collection){ export function update_collection(manifest, generate, manifest_data, collection_path){ let this_mysql_creds if (this_mysql_creds == undefined){ - this_mysql_creds = mysql_creds + if (generate.mysql_creds != undefined){ + this_mysql_creds = generate.mysql_creds + } + else{ + this_mysql_creds = JSON.parse(process.env.mysql_creds) + } } - + let this_s3_creds + if (this_s3_creds == undefined){ + if (generate.s3_creds != undefined){ + this_s3_creds = generate.s3_creds + } + else{ + this_s3_creds = JSON.parse(process.env.s3_creds) + } + } + let s3_bucket + if(s3_bucket == undefined){ + if (this_s3_creds.bucket != undefined){ + s3_bucket = this_s3_creds.bucket + } + } + let collection collection = load_local_collection(collection_path) let collection_type = typeof collection @@ -155,7 +281,7 @@ export function update_collection(manifest, generate, manifest_data, collection_ console.log(error) } try{ - update_2 = update_collection_s3(collection, collection_path) + update_2 = update_collection_s3(collection, collection_path, this_s3_creds) } catch(error){ console.log("update_collection_s3 failed") @@ -379,14 +505,19 @@ export function collection_mysql_check(collection_model, mysql_model){ } export function update_collection_s3(collection, this_collection_path, this_s3_creds){ - if (this_s3_creds == undefined){ - if(Object.keys(process.env).includes("s3_creds")){ - this_s3_creds = JSON.parse(process.env.s3_creds) - } - } let file_list = {} file_list[this_collection_path] = '/collection.json' - return upload_files_s3(file_list , this_s3_creds) + let results + try{ + results = upload_files_s3(file_list , this_s3_creds) + } + catch (error){ + console.log("upload_files_s3 failed") + console.log(error) + } + finally{ + return results + } } export function update_collection_https(collection, this_collection_path, this_hf_creds){ @@ -717,6 +848,10 @@ export function export_cache_locations( manifest, generate, file_dict){ let this_md5 = file_dict[this_file].md5 let this_size = file_dict[this_file].size let this_url + let s3_creds = JSON.parse(process.env.s3_creds) + console.log("s3_creds: ", s3_creds) + let s3_bucket = JSON.parse(process.env.s3_creds)["bucket"] + if (generate.converted == true ){ this_url = "https://huggingface.co/endomorphosis/" + generate.id + "/resolve/main/" + this_file } @@ -725,10 +860,10 @@ export function export_cache_locations( manifest, generate, file_dict){ } let this_local if (generate.quantization != undefined){ - this_local = generate.modelName + "-" + generate.quantization + this_file + this_local = generate.id + "-" + generate.quantization + this_file } else{ - this_local = generate.modelName + this_file + this_local = generate.id + this_file } let this_s3 if (generate.quantization != undefined){ @@ -907,6 +1042,10 @@ export function upload_manifest_files_ipfs(manifest, generate, ipfsCluster){ } } let metadata = {} + // console.log("manifest.folderData") + // console.log(manifest.folderData) + // console.log("manifest.cache") + // console.log(manifest.cache) for (var file in Object.keys(manifest.folderData)){ let this_file = Object.keys(manifest.folderData)[file] if (Object.keys(results_files).includes(this_file)){ @@ -1000,6 +1139,10 @@ export function upload_manifest_files(manifest, generate, local_path, ipfsCluste } export function import_hf(generate, manifest, build_path){ + console.log("import_hf") + console.log("generate: ") + console.log(generate) + let source_path = generate.source let dest_path = build_path console.log("build_path: " + build_path) @@ -1201,7 +1344,7 @@ export function import_hf(generate, manifest, build_path){ results_4 = results_4.toString() } } - else if(generate.format == "llama_fp32" || generate.format == "llama_fp16" || generate.format == "hf"){ + else if(generate.format == "llama_fp32" || generate.format == "llama_fp16" || generate.format == "hf" || generate.format == "fp16" || generate.format == "fp32"){ let command_1 = 'git lfs install ; git clone --depth 1 ' let command_2 = 'git config --global --add safe.directory \'*\' ; git ls-files' let build_path = "/tmp/build/" + hf_model_name @@ -1296,7 +1439,7 @@ export function import_local(generate, manifest, build_path){ let dest_path = build_path let file_structure = [] // detect if file or directory - if (fs.v(source_path)){ + if (fs.existsDir(source_path)){ // copy directory file_structure.push("/") fs.copyDir(source_path, dest_path) @@ -1367,6 +1510,14 @@ export function generate_file_list(generate, manifest, file_list){ } export function import_source(generate, manifest, collection){ + console.log("import source") + console.log("generate") + console.log(generate) + console.log("manifest") + console.log(manifest) + console.log("collection") + console.log(Object.keys(collection)) + let check_id = generate.id let check_pass = true let destPath = generate.destPath @@ -1393,7 +1544,9 @@ export function import_source(generate, manifest, collection){ else{ check_pass = false } - + // force import + // TODO: add fix this logic when prompting. + check_pass = false if (check_pass == false){ if (generate.id == undefined){ if (generate.modelName != undefined){ @@ -1410,6 +1563,8 @@ export function import_source(generate, manifest, collection){ } } else{ + console.log(generate) + throw("generate.id is undefined and generate.modelName is undefined") } } diff --git a/huggingface_scraper/process_manifest_test.js b/huggingface_scraper/process_manifest_test.js index c48abcc..4212850 100644 --- a/huggingface_scraper/process_manifest_test.js +++ b/huggingface_scraper/process_manifest_test.js @@ -90,10 +90,10 @@ export function test5(){ function test6(){ let collection_path = "/storage/cloudkit-models/collection.json" let mysql_creds = { - host: "", - user: "", - password: "", - database: "", + host: "swissknife.mwni.io", + user: "swissknife", + password: "W5!LIGO[pRPO0SdH", + database: "swissknife", } let collection = fs.readFileSync(collection_path) collection = JSON.parse(collection) diff --git a/huggingface_scraper/s3_kit/s3_kit.js b/huggingface_scraper/s3_kit/s3_kit.js new file mode 100644 index 0000000..3ba87fb --- /dev/null +++ b/huggingface_scraper/s3_kit/s3_kit.js @@ -0,0 +1,792 @@ +const AWS = require('aws-sdk'); +const fs = require('fs'); +const path = require('path'); +const AWS = require('aws-sdk'); +const fs = require('fs'); +const pathModule = require('path'); +const tmp = require('tmp-promise'); + +class S3Kit { + constructor(resources, meta = null) { + this.config = null; + this.session = null; + this.bucket = null; + this.bucket_files = null; + this.cp_dir = this.s3_cp_dir; + this.cp_file = this.s3_cp_file; + this.rm_dir = this.s3_rm_dir; + this.rm_file = this.s3_rm_file; + this.ls_dir = this.s3_ls_dir; + this.ls_file = this.s3_ls_file; + this.mv_dir = this.s3_mv_dir; + this.mv_file = this.s3_mv_file; + this.dl_dir = this.s3_dl_dir; + this.dl_file = this.s3_dl_file; + this.ul_dir = this.s3_ul_dir; + this.ul_file = this.s3_ul_file; + this.mk_dir = this.s3_mk_dir; + this.get_session = this.get_session; + if (meta !== null) { + if ("s3cfg" in meta) { + if (meta['s3cfg'] !== null) { + this.config = meta['s3cfg']; + this.get_session(meta['s3cfg']); + } + } + } + } + + call(method, kwargs) { + if (method === 'ls_dir') { + this.method = 'ls_dir'; + return this.s3_ls_dir(kwargs); + } + if (method === 'rm_dir') { + this.method = 'rm_dir'; + return this.s3_rm_dir(kwargs); + } + if (method === 'cp_dir') { + this.method = 'cp_dir'; + return this.s3_cp_dir(kwargs); + } + if (method === 'mv_dir') { + this.method = 'mv_dir'; + return this.s3_mv_dir(kwargs); + } + if (method === 'dl_dir') { + this.method = 'dl_dir'; + return this.s3_dl_dir(kwargs); + } + if (method === 'ul_dir') { + this.method = 'ul_dir'; + return this.s3_ul_dir(kwargs); + } + if (method === 'ls_file') { + this.method = 'ls_file'; + return this.s3_ls_file(kwargs); + } + if (method === 'rm_file') { + this.method = 'rm_file'; + return this.s3_rm_file(kwargs); + } + if (method === 'cp_file') { + this.method = 'cp_file'; + return this.s3_cp_file(kwargs); + } + if (method === 'mv_file') { + this.method = 'mv_file'; + return this.s3_mv_file(kwargs); + } + if (method === 'dl_file') { + this.method = 'dl_file'; + return this.s3_dl_file(kwargs); + } + if (method === 'ul_file') { + this.method = 'ul_file'; + return this.s3_ul_file(kwargs); + } + if (method === 'mk_dir') { + this.method = 'mk_dir'; + return this.s3_mkdir(kwargs); + } + if (method === 'get_session') { + this.method = 'get_session'; + return this.get_session(kwargs); + } + if (method === 'config_to_boto') { + this.method = 'config_to_boto'; + return this.config_to_boto(kwargs); + } + } + + async s3_ls_dir(dir, bucket_name, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket_name, + Prefix: dir + }; + + const data = await s3.listObjectsV2(params).promise(); + const objects = data.Contents.map(obj => { + return { + key: obj.Key, + last_modified: new Date(obj.LastModified).getTime() / 1000, + size: obj.Size, + e_tag: obj.ETag + }; + }); + + return objects + } + async s3_rm_dir(dir, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Prefix: dir + }; + + const data = await s3.listObjectsV2(params).promise(); + const directory = []; + + for (let obj of data.Contents) { + const deleteParams = { + Bucket: bucket, + Key: obj.Key + }; + + await s3.deleteObject(deleteParams).promise(); + + directory.push({ + key: obj.Key, + e_tag: obj.ETag, + last_modified: new Date(obj.LastModified).getTime() / 1000, + size: obj.Size + }); + } + + return directory; + } + + + async s3_cp_dir(src_path, dst_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Prefix: src_path + }; + + const data = await s3.listObjectsV2(params).promise(); + const directory = {}; + + for (let obj of data.Contents) { + const src_key = obj.Key; + const dst_key = src_key.replace(src_path, dst_path); + + if (src_key !== src_path) { + const copyParams = { + Bucket: bucket, + CopySource: `${bucket}/${src_key}`, + Key: dst_key + }; + + const copyResult = await s3.copyObject(copyParams).promise(); + + directory[obj.Key] = { + key: src_key, + e_tag: obj.ETag, + last_modified: new Date(copyResult.CopyObjectResult.LastModified).getTime() / 1000, + size: obj.Size + }; + } + } + + return directory; + } + + async s3_mv_dir(src_path, dst_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Prefix: src_path + }; + + const data = await s3.listObjectsV2(params).promise(); + const directory = {}; + + for (let obj of data.Contents) { + const src_key = obj.Key; + const dst_key = src_key.replace(src_path, dst_path); + + if (src_key !== src_path) { + const copyParams = { + Bucket: bucket, + CopySource: `${bucket}/${src_key}`, + Key: dst_key + }; + + const copyResult = await s3.copyObject(copyParams).promise(); + + const deleteParams = { + Bucket: bucket, + Key: src_key + }; + + await s3.deleteObject(deleteParams).promise(); + + directory[obj.Key] = { + key: src_key, + e_tag: obj.ETag, + last_modified: new Date(copyResult.CopyObjectResult.LastModified).getTime() / 1000, + size: obj.Size + }; + } + } + + return directory; + } + + async s3_dl_dir(remote_path, local_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Prefix: remote_path + }; + + const data = await s3.listObjectsV2(params).promise(); + const directory = {}; + + for (let obj of data.Contents) { + const getParams = { + Bucket: bucket, + Key: obj.Key + }; + + const request = await s3.getObject(getParams).promise(); + const filename = path.basename(obj.Key); + + if (!fs.existsSync(local_path)) { + fs.mkdirSync(local_path, { recursive: true }); + } + + const local_file = path.join(local_path, filename); + fs.writeFileSync(local_file, request.Body); + + directory[obj.Key] = { + key: obj.Key, + last_modified: new Date(obj.LastModified).getTime() / 1000, + size: obj.Size, + e_tag: obj.ETag, + }; + } + + return directory; + } + + async s3_ul_dir(local_path, remote_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const files = fs.readdirSync(local_path).map(file => path.join(local_path, file)); + + const results = {}; + for (let upload_file of files) { + if (fs.lstatSync(upload_file).isFile()) { + const file_extension = path.extname(upload_file); + const upload_file_data = fs.readFileSync(upload_file); + const upload_key = path.join(remote_path, path.basename(upload_file)); + + const putParams = { + Bucket: bucket, + Key: upload_key, + Body: upload_file_data + }; + + const response = await s3.putObject(putParams).promise(); + + results[response.key] = { + key: response.key, + last_modified: new Date().getTime() / 1000, + size: upload_file_data.length, + e_tag: response.ETag, + }; + } else { + throw new Error("upload_file must be a file"); + } + } + + return results; + } + + async s3_ls_file(filekey, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Prefix: filekey + }; + + const data = await s3.listObjectsV2(params).promise(); + const objects = data.Contents; + const directory = {}; + + if (objects.length === 0) { + return false; + } + + for (let obj of objects) { + directory[obj.Key] = { + key: obj.Key, + last_modified: new Date(obj.LastModified).getTime() / 1000, + size: obj.Size, + e_tag: obj.ETag, + }; + } + + return directory; + } + + async s3_rm_file(this_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Key: this_path + }; + + const headData = await s3.headObject(params).promise(); + const key = headData.Key; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + + const deleteData = await s3.deleteObject(params).promise(); + + const results = { + "key": key, + "e_tag": e_tag, + "last_modified": last_modified, + "size": content_length, + }; + + return results; + } + + async s3_cp_file(src_path, dst_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const copyParams = { + Bucket: bucket, + CopySource: `${bucket}/${src_path}`, + Key: dst_path + }; + + const copyData = await s3.copyObject(copyParams).promise(); + + const headParams = { + Bucket: bucket, + Key: dst_path + }; + + const headData = await s3.headObject(headParams).promise(); + const key = dst_path; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + + const results = { + "key": key, + "e_tag": e_tag, + "last_modified": last_modified, + "size": content_length, + }; + + return results; + } + + async s3_mv_file(src_path, dst_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const copyParams = { + Bucket: bucket, + CopySource: `${bucket}/${src_path}`, + Key: dst_path + }; + + const copyData = await s3.copyObject(copyParams).promise(); + + const deleteParams = { + Bucket: bucket, + Key: src_path + }; + + const deleteData = await s3.deleteObject(deleteParams).promise(); + + const headParams = { + Bucket: bucket, + Key: dst_path + }; + + const headData = await s3.headObject(headParams).promise(); + const key = dst_path; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + + const results = { + "key": key, + "e_tag": e_tag, + "last_modified": last_modified, + "size": content_length, + }; + + return results; + } + + async s3_dl_file(remote_path, local_path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + if (remote_path.includes("s3://")) { + remote_path = remote_path.replace("s3://", ""); + remote_path = remote_path.replace(`${bucket}/`, ""); + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Key: remote_path + }; + + const response = await s3.getObject(params).promise(); + const data = response.Body; + + await fs.writeFile(local_path, data); + + const headData = await s3.headObject(params).promise(); + const key = remote_path; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + + const results = { + "key": key, + "last_modified": last_modified, + "size": content_length, + "e_tag": e_tag, + "local_path": local_path, + }; + + return results; + } + + async s3_ul_file(upload_file, path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + let file_extension; + if (fs.existsSync(upload_file)) { + file_extension = pathModule.extname(upload_file); + upload_file = fs.readFileSync(upload_file); + } else { + upload_file = Buffer.from(upload_file); + file_extension = pathModule.extname(path); + } + + const { path: tempFilePath, cleanup } = await tmp.file({ postfix: file_extension }); + fs.writeFileSync(tempFilePath, upload_file); + upload_file = fs.createReadStream(tempFilePath); + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Key: path, + Body: upload_file + }; + + const response = await s3.putObject(params).promise(); + cleanup(); + + const headParams = { + Bucket: bucket, + Key: path + }; + + const headData = await s3.headObject(headParams).promise(); + const key = path; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + + const results = { + "key": key, + "last_modified": last_modified, + "size": content_length, + "e_tag": e_tag, + }; + + return results; + } + + async s3_mk_dir(path, bucket, kwargs = {}) { + let s3_config; + if ('s3cfg' in kwargs) { + s3_config = kwargs['s3cfg']; + } else { + s3_config = this.config; + } + + const s3 = new AWS.S3(this.config_to_boto(s3_config)); + const params = { + Bucket: bucket, + Key: path, + Body: '' + }; + + const response = await s3.putObject(params).promise(); + + const headParams = { + Bucket: bucket, + Key: path + }; + + const headData = await s3.headObject(headParams).promise(); + const key = path; + const last_modified = new Date(headData.LastModified).getTime() / 1000; + const content_length = headData.ContentLength; + const e_tag = headData.ETag; + + const results = { + "key": key, + "last_modified": last_modified, + "size": content_length, + "e_tag": e_tag, + }; + + return results; + } + + get_session(s3_config) { + return new AWS.S3(s3_config); + } + + async s3_upload_object(f, bucket, key, s3_config, progress_callback) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Key: key, + Body: fs.createReadStream(f) + }; + + return s3.upload(params, progress_callback).promise(); + } + + async s3_download_object(f, bucket, key, s3_config, progress_callback) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Key: key + }; + + const fileStream = fs.createWriteStream(f); + const s3Stream = s3.getObject(params).createReadStream(); + + s3Stream.on('data', (chunk) => { + progress_callback(chunk.length); + }); + + s3Stream.pipe(fileStream); + + return new Promise((resolve, reject) => { + fileStream.on('finish', resolve); + fileStream.on('error', reject); + }); + } + + + async upload_dir(dir, bucket, s3_config, progress_callback) { + const s3 = this.get_session(s3_config); + const files = await recursive(dir); + + for (const file of files) { + const params = { + Bucket: bucket, + Key: path.relative(dir, file), + Body: fs.createReadStream(file) + }; + + await s3.upload(params, progress_callback).promise(); + } + } + + async download_dir(dir, bucket, s3_config, progress_callback) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Prefix: dir + }; + + const data = await s3.listObjectsV2(params).promise(); + for (const object of data.Contents) { + const params = { + Bucket: bucket, + Key: object.Key + }; + + const fileStream = fs.createWriteStream(path.join(dir, object.Key)); + const s3Stream = s3.getObject(params).createReadStream(); + + s3Stream.on('data', (chunk) => { + progress_callback(chunk.length); + }); + + s3Stream.pipe(fileStream); + + await new Promise((resolve, reject) => { + fileStream.on('finish', resolve); + fileStream.on('error', reject); + }); + } + } + + async s3_read_dir(dir, bucket, s3_config) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Prefix: dir + }; + + const data = await s3.listObjectsV2(params).promise(); + const directory = {}; + + for (const object of data.Contents) { + const metadata = { + "key": object.Key, + "last_modified": new Date(object.LastModified).getTime() / 1000, + "size": object.Size, + "e_tag": object.ETag, + }; + + directory[object.Key] = metadata; + } + + return directory; + } + + get_session(s3_config) { + if (!this.session) { + this.session = new AWS.S3(this.config_to_boto(s3_config)); + } + return this.session; + } + + async s3_download_object(f, bucket, key, s3_config, progress_callback) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Key: key + }; + + const fileStream = fs.createWriteStream(f); + const s3Stream = s3.getObject(params).createReadStream(); + + s3Stream.on('data', (chunk) => { + progress_callback(chunk.length); + }); + + s3Stream.pipe(fileStream); + + return new Promise((resolve, reject) => { + fileStream.on('finish', resolve); + fileStream.on('error', reject); + }); + } + + async s3_mkdir(dir, bucket, s3_config) { + const s3 = this.get_session(s3_config); + const params = { + Bucket: bucket, + Key: dir, + Body: '' + }; + + return s3.putObject(params).promise(); + } + + + config_to_boto(s3_config) { + let results; + + if (s3_config.accessKey) { + results = { + service: 's3', + accessKeyId: s3_config.accessKey, + secretAccessKey: s3_config.secretKey, + endpoint: s3_config.endpoint, + }; + } else if (s3_config.aws_access_key_id) { + results = { + service: 's3', + accessKeyId: s3_config.aws_access_key_id, + secretAccessKey: s3_config.aws_secret_access_key, + endpoint: s3_config.endpoint_url, + }; + } else { + throw new Error("s3_config must contain accessKey, secretKey, and endpoint"); + } + + this.config = results; + return results; + } +} \ No newline at end of file diff --git a/huggingface_scraper/utils.js b/huggingface_scraper/utils.js index 4bde3ba..3f71331 100644 --- a/huggingface_scraper/utils.js +++ b/huggingface_scraper/utils.js @@ -56,6 +56,10 @@ export function multiple_select_question(question,choices){ export function folder_data(generate, manifest, build_path){ let files + let parent_dir = path.dirname(build_path) + if (!fs.existsSync(parent_dir)){ + fs.mkdirSync(parent_dir) + } if (!fs.existsSync(build_path)){ fs.mkdirSync(build_path) } @@ -128,7 +132,7 @@ export function multiple_choice_question(question, choices){ export function generate_cache_paths(generate, local_path){ - let s3bucket_name = '' + let s3bucket_name = JSON.parse(process.env.s3_creds)["bucket"] let s3_path = 's3://' + s3bucket_name let http_path = '' let ipfs_gateway = '' @@ -212,12 +216,7 @@ export function generate_md5(source, this_path){ export function upload_files_s3(files, this_s3_creds) { - if (!this_s3_creds) { - if (Object.keys(process.env).includes("s3_creds")){ - this_s3_creds = process.env.s3_creds - } - } - + const s3_creds = this_s3_creds function uploadFile(fileDict, index) { if (index >= Object.keys(fileDict).length) { @@ -232,6 +231,14 @@ export function upload_files_s3(files, this_s3_creds) { if(filekey.includes("@")){ filekey = filekey.replace("@", "\\@") } + if(bucket == undefined){ + if (s3_creds != undefined){ + bucket = s3_creds.bucket + } + else{ + bucket = JSON.parse(process.env.s3_creds)["bucket"] + } + } console.log(`fileDict ${filekey} to s3://${bucket}/`); let reader @@ -263,26 +270,48 @@ export function upload_files_s3(files, this_s3_creds) { } } - function uploadFileS3cmd(fileDict, index) { + + function uploadFileS3cmd(fileDict, index, this_s3_creds) { if (index >= Object.keys(fileDict).length) { // All files have been processed return Promise.resolve(); } let file = Object.keys(fileDict)[index] let filekey = fileDict[file] + let bucket + if(bucket == undefined){ + bucket = JSON.parse(process.env.s3_creds)["bucket"] + } + if (this_s3_creds != undefined){ + if (s3_creds != undefined){ + this_s3_creds = s3_creds + } + else{ + this_s3_creds = JSON.parse(process.env.s3_creds) + } + } if (filekey.startsWith('/')){ filekey = filekey.slice(1) } if(filekey.includes("@")){ filekey = filekey.replace("@", "\\@") } + // console.log("process.env") + // console.log(process.env) + // console.log(Object.keys(process.env)) + // console.log("process.env.s3_creds:") + // console.log(JSON.parse(process.env.s3_creds)) + // console.log(Object.keys(JSON.parse(process.env.s3_creds))) + // console.log("this_s3_creds:") + // console.log(this_s3_creds) + // console.log(Object.keys(this_s3_creds)) console.log(`fileDict ${filekey} to s3://${bucket}/`); let reader if(!fs.existsSync(file)){ - return uploadFileS3cmd(fileDict, index + 1); // Recursive call for the next file + return uploadFileS3cmd(fileDict, index + 1, this_s3_creds = this_s3_creds); // Recursive call for the next file }else if(fs.statSync(file).isDirectory()){ - return uploadFileS3cmd(fileDict, index + 1); // Recursive call for the next file + return uploadFileS3cmd(fileDict, index + 1, this_s3_creds = this_s3_creds); // Recursive call for the next file } else { @@ -293,10 +322,19 @@ export function upload_files_s3(files, this_s3_creds) { command += "--host="+this_s3_creds.endpoint + " " command += "put " + file + " s3://" + bucket + "/" + filekey console.log("command: ", command) + let results if(s3_creds != undefined){ - let results = child_process.execSync(command); - console.log(`upload of ${filekey} complete`); - return uploadFileS3cmd(fileDict, index + 1); // Recursive call for the next file + try{ + results = child_process.execSync(command); + } + catch(error){ + console.log("error uploading file") + console.log(error) + } + finally{ + console.log(`upload of ${filekey} complete`); + return uploadFileS3cmd(fileDict, index + 1,this_s3_creds = this_s3_creds); // Recursive call for the next file + } }else{ return Promise.resolve(); } @@ -308,7 +346,7 @@ export function upload_files_s3(files, this_s3_creds) { throw "files is undefined" } if (this_s3_creds != undefined){ - return uploadFileS3cmd(files, 0) + return uploadFileS3cmd(files, 0, this_s3_creds) .then(() => { console.log("All files uploaded"); return files; @@ -576,6 +614,20 @@ export function generate_hwrequrements_test(generate){ //let dicts = ["cache", "modelName", "units"] let dicts =[ "minFlops", "flopsPerUnit", "minSpeed", "gpuCount", "minSpeed", "gpuMemory", "diskUsage", "cpuMemory", "minBandwidth", "minDiskIO", "cpuCount"] + let types = { + "minFlops": "object", + "flopsPerUnit": "number", + "minSpeed": "number", + "gpuCount": "object", + "minSpeed": "number", + "gpuMemory": "number", + "diskUsage": "number", + "cpuMemory": "number", + "minBandwidth": "number", + "minDiskIO": "number", + "cpuCount": "object" + } + let hwRequirements = generate.hwRequirements for (var dict in dicts){ @@ -583,6 +635,9 @@ export function generate_hwrequrements_test(generate){ if (!Object.keys(hwRequirements).includes(this_dict)){ throw new Error("Invalid hwRequirements "+ this_dict + " not in hwRequirements") } + if (types[this_dict] != typeof(hwRequirements[this_dict])){ + throw new Error("Invalid hwRequirements "+ this_dict + " incorrect type, expected " + types[this_dict] + " but instead got " + typeof(hwRequirements[this_dict])) + } } results = true diff --git a/ipfs_transformers/__init__.py b/ipfs_transformers/__init__.py new file mode 100644 index 0000000..22b3784 --- /dev/null +++ b/ipfs_transformers/__init__.py @@ -0,0 +1,1758 @@ + +from .ipfs_kit import ipfs_kit +from .s3_kit import s3_kit +from .test_fio import test_fio +from .ipfs_transformers import ASTConfig +from .ipfs_transformers import ASTFeatureExtractor +from .ipfs_transformers import ASTForAudioClassification +from .ipfs_transformers import ASTModel +from .ipfs_transformers import ASTPreTrainedModel +from .ipfs_transformers import AlbertConfig +from .ipfs_transformers import AlbertForMaskedLM +from .ipfs_transformers import AlbertForMultipleChoice +from .ipfs_transformers import AlbertForPreTraining +from .ipfs_transformers import AlbertForQuestionAnswering +from .ipfs_transformers import AlbertForSequenceClassification +from .ipfs_transformers import AlbertForTokenClassification +from .ipfs_transformers import AlbertModel +from .ipfs_transformers import AlbertPreTrainedModel +from .ipfs_transformers import AlbertTokenizerFast +from .ipfs_transformers import AlignConfig +from .ipfs_transformers import AlignModel +from .ipfs_transformers import AlignPreTrainedModel +from .ipfs_transformers import AlignProcessor +from .ipfs_transformers import AlignTextConfig +from .ipfs_transformers import AlignTextModel +from .ipfs_transformers import AlignVisionConfig +from .ipfs_transformers import AlignVisionModel +from .ipfs_transformers import AltCLIPConfig +from .ipfs_transformers import AltCLIPModel +from .ipfs_transformers import AltCLIPPreTrainedModel +from .ipfs_transformers import AltCLIPProcessor +from .ipfs_transformers import AltCLIPTextConfig +from .ipfs_transformers import AltCLIPTextModel +from .ipfs_transformers import AltCLIPVisionConfig +from .ipfs_transformers import AltCLIPVisionModel +from .ipfs_transformers import AutoBackbone +from .ipfs_transformers import AutoConfig +from .ipfs_transformers import AutoFeatureExtractor +from .ipfs_transformers import AutoImageProcessor +from .ipfs_transformers import AutoModel +from .ipfs_transformers import AutoModelForAudioClassification +from .ipfs_transformers import AutoModelForAudioFrameClassification +from .ipfs_transformers import AutoModelForAudioXVector +from .ipfs_transformers import AutoModelForCTC +from .ipfs_transformers import AutoModelForCausalLM +from .ipfs_transformers import AutoModelForDepthEstimation +from .ipfs_transformers import AutoModelForDocumentQuestionAnswering +from .ipfs_transformers import AutoModelForImageClassification +from .ipfs_transformers import AutoModelForImageSegmentation +from .ipfs_transformers import AutoModelForImageToImage +from .ipfs_transformers import AutoModelForInstanceSegmentation +from .ipfs_transformers import AutoModelForKeypointDetection +from .ipfs_transformers import AutoModelForMaskGeneration +from .ipfs_transformers import AutoModelForMaskedImageModeling +from .ipfs_transformers import AutoModelForMaskedLM +from .ipfs_transformers import AutoModelForMultipleChoice +from .ipfs_transformers import AutoModelForNextSentencePrediction +from .ipfs_transformers import AutoModelForObjectDetection +from .ipfs_transformers import AutoModelForPreTraining +from .ipfs_transformers import AutoModelForQuestionAnswering +from .ipfs_transformers import AutoModelForSemanticSegmentation +from .ipfs_transformers import AutoModelForSeq2SeqLM +from .ipfs_transformers import AutoModelForSequenceClassification +from .ipfs_transformers import AutoModelForSpeechSeq2Seq +from .ipfs_transformers import AutoModelForTableQuestionAnswering +from .ipfs_transformers import AutoModelForTextEncoding +from .ipfs_transformers import AutoModelForTextToSpectrogram +from .ipfs_transformers import AutoModelForTextToWaveform +from .ipfs_transformers import AutoModelForTokenClassification +from .ipfs_transformers import AutoModelForUniversalSegmentation +from .ipfs_transformers import AutoModelForVideoClassification +from .ipfs_transformers import AutoModelForVision2Seq +from .ipfs_transformers import AutoModelForVisualQuestionAnswering +from .ipfs_transformers import AutoModelForZeroShotImageClassification +from .ipfs_transformers import AutoModelForZeroShotObjectDetection +from .ipfs_transformers import AutoModelWithLMHead +from .ipfs_transformers import AutoProcessor +from .ipfs_transformers import AutoTokenizer +from .ipfs_transformers import AutoformerConfig +from .ipfs_transformers import AutoformerForPrediction +from .ipfs_transformers import AutoformerModel +from .ipfs_transformers import AutoformerPreTrainedModel +from .ipfs_transformers import BarkCausalModel +from .ipfs_transformers import BarkCoarseConfig +from .ipfs_transformers import BarkCoarseModel +from .ipfs_transformers import BarkConfig +from .ipfs_transformers import BarkFineConfig +from .ipfs_transformers import BarkFineModel +from .ipfs_transformers import BarkModel +from .ipfs_transformers import BarkPreTrainedModel +from .ipfs_transformers import BarkProcessor +from .ipfs_transformers import BarkSemanticConfig +from .ipfs_transformers import BarkSemanticModel +from .ipfs_transformers import BartConfig +from .ipfs_transformers import BartForCausalLM +from .ipfs_transformers import BartForConditionalGeneration +from .ipfs_transformers import BartForQuestionAnswering +from .ipfs_transformers import BartForSequenceClassification +from .ipfs_transformers import BartModel +from .ipfs_transformers import BartPreTrainedModel +from .ipfs_transformers import BartPretrainedModel +from .ipfs_transformers import BartTokenizer +from .ipfs_transformers import BartTokenizerFast +from .ipfs_transformers import BarthezTokenizerFast +from .ipfs_transformers import BeitBackbone +from .ipfs_transformers import BeitConfig +from .ipfs_transformers import BeitFeatureExtractor +from .ipfs_transformers import BeitForImageClassification +from .ipfs_transformers import BeitForMaskedImageModeling +from .ipfs_transformers import BeitForSemanticSegmentation +from .ipfs_transformers import BeitImageProcessor +from .ipfs_transformers import BeitModel +from .ipfs_transformers import BeitPreTrainedModel +from .ipfs_transformers import BertConfig +from .ipfs_transformers import BertForMaskedLM +from .ipfs_transformers import BertForMultipleChoice +from .ipfs_transformers import BertForNextSentencePrediction +from .ipfs_transformers import BertForPreTraining +from .ipfs_transformers import BertForQuestionAnswering +from .ipfs_transformers import BertForSequenceClassification +from .ipfs_transformers import BertForTokenClassification +from .ipfs_transformers import BertGenerationConfig +from .ipfs_transformers import BertGenerationDecoder +from .ipfs_transformers import BertGenerationEncoder +from .ipfs_transformers import BertGenerationPreTrainedModel +from .ipfs_transformers import BertJapaneseTokenizer +from .ipfs_transformers import BertLMHeadModel +from .ipfs_transformers import BertModel +from .ipfs_transformers import BertPreTrainedModel +from .ipfs_transformers import BertTokenizer +from .ipfs_transformers import BertTokenizerFast +from .ipfs_transformers import BertweetTokenizer +from .ipfs_transformers import BigBirdConfig +from .ipfs_transformers import BigBirdForCausalLM +from .ipfs_transformers import BigBirdForMaskedLM +from .ipfs_transformers import BigBirdForMultipleChoice +from .ipfs_transformers import BigBirdForPreTraining +from .ipfs_transformers import BigBirdForQuestionAnswering +from .ipfs_transformers import BigBirdForSequenceClassification +from .ipfs_transformers import BigBirdForTokenClassification +from .ipfs_transformers import BigBirdModel +from .ipfs_transformers import BigBirdPegasusConfig +from .ipfs_transformers import BigBirdPegasusForCausalLM +from .ipfs_transformers import BigBirdPegasusForConditionalGeneration +from .ipfs_transformers import BigBirdPegasusForQuestionAnswering +from .ipfs_transformers import BigBirdPegasusForSequenceClassification +from .ipfs_transformers import BigBirdPegasusModel +from .ipfs_transformers import BigBirdPegasusPreTrainedModel +from .ipfs_transformers import BigBirdPreTrainedModel +from .ipfs_transformers import BigBirdTokenizerFast +from .ipfs_transformers import BioGptConfig +from .ipfs_transformers import BioGptForCausalLM +from .ipfs_transformers import BioGptForSequenceClassification +from .ipfs_transformers import BioGptForTokenClassification +from .ipfs_transformers import BioGptModel +from .ipfs_transformers import BioGptPreTrainedModel +from .ipfs_transformers import BioGptTokenizer +from .ipfs_transformers import BitBackbone +from .ipfs_transformers import BitConfig +from .ipfs_transformers import BitForImageClassification +from .ipfs_transformers import BitImageProcessor +from .ipfs_transformers import BitModel +from .ipfs_transformers import BitPreTrainedModel +from .ipfs_transformers import BlenderbotConfig +from .ipfs_transformers import BlenderbotForCausalLM +from .ipfs_transformers import BlenderbotForConditionalGeneration +from .ipfs_transformers import BlenderbotModel +from .ipfs_transformers import BlenderbotPreTrainedModel +from .ipfs_transformers import BlenderbotSmallConfig +from .ipfs_transformers import BlenderbotSmallForCausalLM +from .ipfs_transformers import BlenderbotSmallForConditionalGeneration +from .ipfs_transformers import BlenderbotSmallModel +from .ipfs_transformers import BlenderbotSmallPreTrainedModel +from .ipfs_transformers import BlenderbotSmallTokenizer +from .ipfs_transformers import BlenderbotSmallTokenizerFast +from .ipfs_transformers import BlenderbotTokenizer +from .ipfs_transformers import BlenderbotTokenizerFast +from .ipfs_transformers import Blip2Config +from .ipfs_transformers import Blip2ForConditionalGeneration +from .ipfs_transformers import Blip2Model +from .ipfs_transformers import Blip2PreTrainedModel +from .ipfs_transformers import Blip2Processor +from .ipfs_transformers import Blip2QFormerConfig +from .ipfs_transformers import Blip2QFormerModel +from .ipfs_transformers import Blip2VisionConfig +from .ipfs_transformers import Blip2VisionModel +from .ipfs_transformers import BlipConfig +from .ipfs_transformers import BlipForConditionalGeneration +from .ipfs_transformers import BlipForImageTextRetrieval +from .ipfs_transformers import BlipForQuestionAnswering +from .ipfs_transformers import BlipImageProcessor +from .ipfs_transformers import BlipModel +from .ipfs_transformers import BlipPreTrainedModel +from .ipfs_transformers import BlipProcessor +from .ipfs_transformers import BlipTextConfig +from .ipfs_transformers import BlipTextModel +from .ipfs_transformers import BlipVisionConfig +from .ipfs_transformers import BlipVisionModel +from .ipfs_transformers import BloomConfig +from .ipfs_transformers import BloomForCausalLM +from .ipfs_transformers import BloomForQuestionAnswering +from .ipfs_transformers import BloomForSequenceClassification +from .ipfs_transformers import BloomForTokenClassification +from .ipfs_transformers import BloomModel +from .ipfs_transformers import BloomPreTrainedModel +from .ipfs_transformers import BloomTokenizerFast +from .ipfs_transformers import BridgeTowerConfig +from .ipfs_transformers import BridgeTowerForContrastiveLearning +from .ipfs_transformers import BridgeTowerForImageAndTextRetrieval +from .ipfs_transformers import BridgeTowerForMaskedLM +from .ipfs_transformers import BridgeTowerImageProcessor +from .ipfs_transformers import BridgeTowerModel +from .ipfs_transformers import BridgeTowerPreTrainedModel +from .ipfs_transformers import BridgeTowerProcessor +from .ipfs_transformers import BridgeTowerTextConfig +from .ipfs_transformers import BridgeTowerVisionConfig +from .ipfs_transformers import BrosConfig +from .ipfs_transformers import BrosForTokenClassification +from .ipfs_transformers import BrosModel +from .ipfs_transformers import BrosPreTrainedModel +from .ipfs_transformers import BrosProcessor +from .ipfs_transformers import BrosSpadeEEForTokenClassification +from .ipfs_transformers import BrosSpadeELForTokenClassification +from .ipfs_transformers import ByT5Tokenizer +from .ipfs_transformers import CLIPConfig +from .ipfs_transformers import CLIPFeatureExtractor +from .ipfs_transformers import CLIPForImageClassification +from .ipfs_transformers import CLIPImageProcessor +from .ipfs_transformers import CLIPModel +from .ipfs_transformers import CLIPPreTrainedModel +from .ipfs_transformers import CLIPProcessor +from .ipfs_transformers import CLIPSegConfig +from .ipfs_transformers import CLIPSegForImageSegmentation +from .ipfs_transformers import CLIPSegModel +from .ipfs_transformers import CLIPSegPreTrainedModel +from .ipfs_transformers import CLIPSegProcessor +from .ipfs_transformers import CLIPSegTextConfig +from .ipfs_transformers import CLIPSegTextModel +from .ipfs_transformers import CLIPSegVisionConfig +from .ipfs_transformers import CLIPSegVisionModel +from .ipfs_transformers import CLIPTextConfig +from .ipfs_transformers import CLIPTextModel +from .ipfs_transformers import CLIPTextModelWithProjection +from .ipfs_transformers import CLIPTokenizer +from .ipfs_transformers import CLIPTokenizerFast +from .ipfs_transformers import CLIPVisionConfig +from .ipfs_transformers import CLIPVisionModel +from .ipfs_transformers import CLIPVisionModelWithProjection +from .ipfs_transformers import CTRLConfig +from .ipfs_transformers import CTRLForSequenceClassification +from .ipfs_transformers import CTRLLMHeadModel +from .ipfs_transformers import CTRLModel +from .ipfs_transformers import CTRLPreTrainedModel +from .ipfs_transformers import CTRLTokenizer +from .ipfs_transformers import CamembertConfig +from .ipfs_transformers import CamembertForCausalLM +from .ipfs_transformers import CamembertForMaskedLM +from .ipfs_transformers import CamembertForMultipleChoice +from .ipfs_transformers import CamembertForQuestionAnswering +from .ipfs_transformers import CamembertForSequenceClassification +from .ipfs_transformers import CamembertForTokenClassification +from .ipfs_transformers import CamembertModel +from .ipfs_transformers import CamembertPreTrainedModel +from .ipfs_transformers import CamembertTokenizerFast +from .ipfs_transformers import CanineConfig +from .ipfs_transformers import CanineForMultipleChoice +from .ipfs_transformers import CanineForQuestionAnswering +from .ipfs_transformers import CanineForSequenceClassification +from .ipfs_transformers import CanineForTokenClassification +from .ipfs_transformers import CanineModel +from .ipfs_transformers import CaninePreTrainedModel +from .ipfs_transformers import CanineTokenizer +from .ipfs_transformers import ChineseCLIPConfig +from .ipfs_transformers import ChineseCLIPFeatureExtractor +from .ipfs_transformers import ChineseCLIPImageProcessor +from .ipfs_transformers import ChineseCLIPModel +from .ipfs_transformers import ChineseCLIPPreTrainedModel +from .ipfs_transformers import ChineseCLIPProcessor +from .ipfs_transformers import ChineseCLIPTextConfig +from .ipfs_transformers import ChineseCLIPTextModel +from .ipfs_transformers import ChineseCLIPVisionConfig +from .ipfs_transformers import ChineseCLIPVisionModel +from .ipfs_transformers import ClapAudioConfig +from .ipfs_transformers import ClapAudioModel +from .ipfs_transformers import ClapAudioModelWithProjection +from .ipfs_transformers import ClapConfig +from .ipfs_transformers import ClapFeatureExtractor +from .ipfs_transformers import ClapModel +from .ipfs_transformers import ClapPreTrainedModel +from .ipfs_transformers import ClapProcessor +from .ipfs_transformers import ClapTextConfig +from .ipfs_transformers import ClapTextModel +from .ipfs_transformers import ClapTextModelWithProjection +from .ipfs_transformers import ClvpConfig +from .ipfs_transformers import ClvpDecoder +from .ipfs_transformers import ClvpDecoderConfig +from .ipfs_transformers import ClvpEncoder +from .ipfs_transformers import ClvpEncoderConfig +from .ipfs_transformers import ClvpFeatureExtractor +from .ipfs_transformers import ClvpForCausalLM +from .ipfs_transformers import ClvpModel +from .ipfs_transformers import ClvpModelForConditionalGeneration +from .ipfs_transformers import ClvpPreTrainedModel +from .ipfs_transformers import ClvpProcessor +from .ipfs_transformers import ClvpTokenizer +from .ipfs_transformers import CodeGenConfig +from .ipfs_transformers import CodeGenForCausalLM +from .ipfs_transformers import CodeGenModel +from .ipfs_transformers import CodeGenPreTrainedModel +from .ipfs_transformers import CodeGenTokenizer +from .ipfs_transformers import CodeGenTokenizerFast +from .ipfs_transformers import CodeLlamaTokenizerFast +from .ipfs_transformers import CohereConfig +from .ipfs_transformers import CohereForCausalLM +from .ipfs_transformers import CohereModel +from .ipfs_transformers import CoherePreTrainedModel +from .ipfs_transformers import CohereTokenizerFast +from .ipfs_transformers import ConditionalDetrConfig +from .ipfs_transformers import ConditionalDetrFeatureExtractor +from .ipfs_transformers import ConditionalDetrForObjectDetection +from .ipfs_transformers import ConditionalDetrForSegmentation +from .ipfs_transformers import ConditionalDetrImageProcessor +from .ipfs_transformers import ConditionalDetrModel +from .ipfs_transformers import ConditionalDetrPreTrainedModel +from .ipfs_transformers import ConvBertConfig +from .ipfs_transformers import ConvBertForMaskedLM +from .ipfs_transformers import ConvBertForMultipleChoice +from .ipfs_transformers import ConvBertForQuestionAnswering +from .ipfs_transformers import ConvBertForSequenceClassification +from .ipfs_transformers import ConvBertForTokenClassification +from .ipfs_transformers import ConvBertModel +from .ipfs_transformers import ConvBertPreTrainedModel +from .ipfs_transformers import ConvBertTokenizer +from .ipfs_transformers import ConvBertTokenizerFast +from .ipfs_transformers import ConvNextBackbone +from .ipfs_transformers import ConvNextConfig +from .ipfs_transformers import ConvNextFeatureExtractor +from .ipfs_transformers import ConvNextForImageClassification +from .ipfs_transformers import ConvNextImageProcessor +from .ipfs_transformers import ConvNextModel +from .ipfs_transformers import ConvNextPreTrainedModel +from .ipfs_transformers import ConvNextV2Backbone +from .ipfs_transformers import ConvNextV2Config +from .ipfs_transformers import ConvNextV2ForImageClassification +from .ipfs_transformers import ConvNextV2Model +from .ipfs_transformers import ConvNextV2PreTrainedModel +from .ipfs_transformers import CpmAntConfig +from .ipfs_transformers import CpmAntForCausalLM +from .ipfs_transformers import CpmAntModel +from .ipfs_transformers import CpmAntPreTrainedModel +from .ipfs_transformers import CpmAntTokenizer +from .ipfs_transformers import CpmTokenizerFast +from .ipfs_transformers import CvtConfig +from .ipfs_transformers import CvtForImageClassification +from .ipfs_transformers import CvtModel +from .ipfs_transformers import CvtPreTrainedModel +from .ipfs_transformers import DPRConfig +from .ipfs_transformers import DPRContextEncoder +from .ipfs_transformers import DPRContextEncoderTokenizer +from .ipfs_transformers import DPRContextEncoderTokenizerFast +from .ipfs_transformers import DPRPreTrainedModel +from .ipfs_transformers import DPRPretrainedContextEncoder +from .ipfs_transformers import DPRPretrainedQuestionEncoder +from .ipfs_transformers import DPRPretrainedReader +from .ipfs_transformers import DPRQuestionEncoder +from .ipfs_transformers import DPRQuestionEncoderTokenizer +from .ipfs_transformers import DPRQuestionEncoderTokenizerFast +from .ipfs_transformers import DPRReader +from .ipfs_transformers import DPRReaderTokenizer +from .ipfs_transformers import DPRReaderTokenizerFast +from .ipfs_transformers import DPTConfig +from .ipfs_transformers import DPTFeatureExtractor +from .ipfs_transformers import DPTForDepthEstimation +from .ipfs_transformers import DPTForSemanticSegmentation +from .ipfs_transformers import DPTImageProcessor +from .ipfs_transformers import DPTModel +from .ipfs_transformers import DPTPreTrainedModel +from .ipfs_transformers import Data2VecAudioConfig +from .ipfs_transformers import Data2VecAudioForAudioFrameClassification +from .ipfs_transformers import Data2VecAudioForCTC +from .ipfs_transformers import Data2VecAudioForSequenceClassification +from .ipfs_transformers import Data2VecAudioForXVector +from .ipfs_transformers import Data2VecAudioModel +from .ipfs_transformers import Data2VecAudioPreTrainedModel +from .ipfs_transformers import Data2VecTextConfig +from .ipfs_transformers import Data2VecTextForCausalLM +from .ipfs_transformers import Data2VecTextForMaskedLM +from .ipfs_transformers import Data2VecTextForMultipleChoice +from .ipfs_transformers import Data2VecTextForQuestionAnswering +from .ipfs_transformers import Data2VecTextForSequenceClassification +from .ipfs_transformers import Data2VecTextForTokenClassification +from .ipfs_transformers import Data2VecTextModel +from .ipfs_transformers import Data2VecTextPreTrainedModel +from .ipfs_transformers import Data2VecVisionConfig +from .ipfs_transformers import Data2VecVisionForImageClassification +from .ipfs_transformers import Data2VecVisionForSemanticSegmentation +from .ipfs_transformers import Data2VecVisionModel +from .ipfs_transformers import Data2VecVisionPreTrainedModel +from .ipfs_transformers import DebertaConfig +from .ipfs_transformers import DebertaForMaskedLM +from .ipfs_transformers import DebertaForQuestionAnswering +from .ipfs_transformers import DebertaForSequenceClassification +from .ipfs_transformers import DebertaForTokenClassification +from .ipfs_transformers import DebertaModel +from .ipfs_transformers import DebertaPreTrainedModel +from .ipfs_transformers import DebertaTokenizer +from .ipfs_transformers import DebertaTokenizerFast +from .ipfs_transformers import DebertaV2Config +from .ipfs_transformers import DebertaV2ForMaskedLM +from .ipfs_transformers import DebertaV2ForMultipleChoice +from .ipfs_transformers import DebertaV2ForQuestionAnswering +from .ipfs_transformers import DebertaV2ForSequenceClassification +from .ipfs_transformers import DebertaV2ForTokenClassification +from .ipfs_transformers import DebertaV2Model +from .ipfs_transformers import DebertaV2PreTrainedModel +from .ipfs_transformers import DebertaV2TokenizerFast +from .ipfs_transformers import DecisionTransformerConfig +from .ipfs_transformers import DecisionTransformerGPT2Model +from .ipfs_transformers import DecisionTransformerGPT2PreTrainedModel +from .ipfs_transformers import DecisionTransformerModel +from .ipfs_transformers import DecisionTransformerPreTrainedModel +from .ipfs_transformers import DeformableDetrConfig +from .ipfs_transformers import DeformableDetrFeatureExtractor +from .ipfs_transformers import DeformableDetrForObjectDetection +from .ipfs_transformers import DeformableDetrImageProcessor +from .ipfs_transformers import DeformableDetrModel +from .ipfs_transformers import DeformableDetrPreTrainedModel +from .ipfs_transformers import DeiTConfig +from .ipfs_transformers import DeiTFeatureExtractor +from .ipfs_transformers import DeiTForImageClassification +from .ipfs_transformers import DeiTForImageClassificationWithTeacher +from .ipfs_transformers import DeiTForMaskedImageModeling +from .ipfs_transformers import DeiTImageProcessor +from .ipfs_transformers import DeiTModel +from .ipfs_transformers import DeiTPreTrainedModel +from .ipfs_transformers import DepthAnythingConfig +from .ipfs_transformers import DepthAnythingForDepthEstimation +from .ipfs_transformers import DepthAnythingPreTrainedModel +from .ipfs_transformers import DetaConfig +from .ipfs_transformers import DetaForObjectDetection +from .ipfs_transformers import DetaImageProcessor +from .ipfs_transformers import DetaModel +from .ipfs_transformers import DetaPreTrainedModel +from .ipfs_transformers import DetrConfig +from .ipfs_transformers import DetrFeatureExtractor +from .ipfs_transformers import DetrForObjectDetection +from .ipfs_transformers import DetrForSegmentation +from .ipfs_transformers import DetrImageProcessor +from .ipfs_transformers import DetrModel +from .ipfs_transformers import DetrPreTrainedModel +from .ipfs_transformers import DinatBackbone +from .ipfs_transformers import DinatConfig +from .ipfs_transformers import DinatForImageClassification +from .ipfs_transformers import DinatModel +from .ipfs_transformers import DinatPreTrainedModel +from .ipfs_transformers import Dinov2Backbone +from .ipfs_transformers import Dinov2Config +from .ipfs_transformers import Dinov2ForImageClassification +from .ipfs_transformers import Dinov2Model +from .ipfs_transformers import Dinov2PreTrainedModel +from .ipfs_transformers import DistilBertConfig +from .ipfs_transformers import DistilBertForMaskedLM +from .ipfs_transformers import DistilBertForMultipleChoice +from .ipfs_transformers import DistilBertForQuestionAnswering +from .ipfs_transformers import DistilBertForSequenceClassification +from .ipfs_transformers import DistilBertForTokenClassification +from .ipfs_transformers import DistilBertModel +from .ipfs_transformers import DistilBertPreTrainedModel +from .ipfs_transformers import DistilBertTokenizer +from .ipfs_transformers import DistilBertTokenizerFast +from .ipfs_transformers import DonutFeatureExtractor +from .ipfs_transformers import DonutImageProcessor +from .ipfs_transformers import DonutProcessor +from .ipfs_transformers import DonutSwinConfig +from .ipfs_transformers import DonutSwinModel +from .ipfs_transformers import DonutSwinPreTrainedModel +from .ipfs_transformers import EfficientFormerConfig +from .ipfs_transformers import EfficientFormerForImageClassification +from .ipfs_transformers import EfficientFormerForImageClassificationWithTeacher +from .ipfs_transformers import EfficientFormerImageProcessor +from .ipfs_transformers import EfficientFormerModel +from .ipfs_transformers import EfficientFormerPreTrainedModel +from .ipfs_transformers import EfficientNetConfig +from .ipfs_transformers import EfficientNetForImageClassification +from .ipfs_transformers import EfficientNetImageProcessor +from .ipfs_transformers import EfficientNetModel +from .ipfs_transformers import EfficientNetPreTrainedModel +from .ipfs_transformers import ElectraConfig +from .ipfs_transformers import ElectraForCausalLM +from .ipfs_transformers import ElectraForMaskedLM +from .ipfs_transformers import ElectraForMultipleChoice +from .ipfs_transformers import ElectraForPreTraining +from .ipfs_transformers import ElectraForQuestionAnswering +from .ipfs_transformers import ElectraForSequenceClassification +from .ipfs_transformers import ElectraForTokenClassification +from .ipfs_transformers import ElectraModel +from .ipfs_transformers import ElectraPreTrainedModel +from .ipfs_transformers import ElectraTokenizer +from .ipfs_transformers import ElectraTokenizerFast +from .ipfs_transformers import EncodecConfig +from .ipfs_transformers import EncodecFeatureExtractor +from .ipfs_transformers import EncodecModel +from .ipfs_transformers import EncodecPreTrainedModel +from .ipfs_transformers import EncoderDecoderConfig +from .ipfs_transformers import EncoderDecoderModel +from .ipfs_transformers import ErnieConfig +from .ipfs_transformers import ErnieForCausalLM +from .ipfs_transformers import ErnieForMaskedLM +from .ipfs_transformers import ErnieForMultipleChoice +from .ipfs_transformers import ErnieForNextSentencePrediction +from .ipfs_transformers import ErnieForPreTraining +from .ipfs_transformers import ErnieForQuestionAnswering +from .ipfs_transformers import ErnieForSequenceClassification +from .ipfs_transformers import ErnieForTokenClassification +from .ipfs_transformers import ErnieMConfig +from .ipfs_transformers import ErnieMForInformationExtraction +from .ipfs_transformers import ErnieMForMultipleChoice +from .ipfs_transformers import ErnieMForQuestionAnswering +from .ipfs_transformers import ErnieMForSequenceClassification +from .ipfs_transformers import ErnieMForTokenClassification +from .ipfs_transformers import ErnieMModel +from .ipfs_transformers import ErnieMPreTrainedModel +from .ipfs_transformers import ErnieModel +from .ipfs_transformers import ErniePreTrainedModel +from .ipfs_transformers import EsmConfig +from .ipfs_transformers import EsmFoldPreTrainedModel +from .ipfs_transformers import EsmForMaskedLM +from .ipfs_transformers import EsmForProteinFolding +from .ipfs_transformers import EsmForSequenceClassification +from .ipfs_transformers import EsmForTokenClassification +from .ipfs_transformers import EsmModel +from .ipfs_transformers import EsmPreTrainedModel +from .ipfs_transformers import EsmTokenizer +from .ipfs_transformers import FNetConfig +from .ipfs_transformers import FNetForMaskedLM +from .ipfs_transformers import FNetForMultipleChoice +from .ipfs_transformers import FNetForNextSentencePrediction +from .ipfs_transformers import FNetForPreTraining +from .ipfs_transformers import FNetForQuestionAnswering +from .ipfs_transformers import FNetForSequenceClassification +from .ipfs_transformers import FNetForTokenClassification +from .ipfs_transformers import FNetModel +from .ipfs_transformers import FNetPreTrainedModel +from .ipfs_transformers import FNetTokenizerFast +from .ipfs_transformers import FSMTConfig +from .ipfs_transformers import FSMTForConditionalGeneration +from .ipfs_transformers import FSMTModel +from .ipfs_transformers import FSMTTokenizer +from .ipfs_transformers import FalconConfig +from .ipfs_transformers import FalconForCausalLM +from .ipfs_transformers import FalconForQuestionAnswering +from .ipfs_transformers import FalconForSequenceClassification +from .ipfs_transformers import FalconForTokenClassification +from .ipfs_transformers import FalconModel +from .ipfs_transformers import FalconPreTrainedModel +from .ipfs_transformers import FastSpeech2ConformerConfig +from .ipfs_transformers import FastSpeech2ConformerHifiGan +from .ipfs_transformers import FastSpeech2ConformerHifiGanConfig +from .ipfs_transformers import FastSpeech2ConformerModel +from .ipfs_transformers import FastSpeech2ConformerPreTrainedModel +from .ipfs_transformers import FastSpeech2ConformerTokenizer +from .ipfs_transformers import FastSpeech2ConformerWithHifiGan +from .ipfs_transformers import FastSpeech2ConformerWithHifiGanConfig +from .ipfs_transformers import FeatureExtractionMixin +from .ipfs_transformers import FlaubertConfig +from .ipfs_transformers import FlaubertForMultipleChoice +from .ipfs_transformers import FlaubertForQuestionAnswering +from .ipfs_transformers import FlaubertForQuestionAnsweringSimple +from .ipfs_transformers import FlaubertForSequenceClassification +from .ipfs_transformers import FlaubertForTokenClassification +from .ipfs_transformers import FlaubertModel +from .ipfs_transformers import FlaubertPreTrainedModel +from .ipfs_transformers import FlaubertTokenizer +from .ipfs_transformers import FlaubertWithLMHeadModel +from .ipfs_transformers import FlavaConfig +from .ipfs_transformers import FlavaFeatureExtractor +from .ipfs_transformers import FlavaForPreTraining +from .ipfs_transformers import FlavaImageCodebook +from .ipfs_transformers import FlavaImageCodebookConfig +from .ipfs_transformers import FlavaImageConfig +from .ipfs_transformers import FlavaImageModel +from .ipfs_transformers import FlavaImageProcessor +from .ipfs_transformers import FlavaModel +from .ipfs_transformers import FlavaMultimodalConfig +from .ipfs_transformers import FlavaMultimodalModel +from .ipfs_transformers import FlavaPreTrainedModel +from .ipfs_transformers import FlavaProcessor +from .ipfs_transformers import FlavaTextConfig +from .ipfs_transformers import FlavaTextModel +from .ipfs_transformers import FocalNetBackbone +from .ipfs_transformers import FocalNetConfig +from .ipfs_transformers import FocalNetForImageClassification +from .ipfs_transformers import FocalNetForMaskedImageModeling +from .ipfs_transformers import FocalNetModel +from .ipfs_transformers import FocalNetPreTrainedModel +from .ipfs_transformers import FunnelBaseModel +from .ipfs_transformers import FunnelConfig +from .ipfs_transformers import FunnelForMaskedLM +from .ipfs_transformers import FunnelForMultipleChoice +from .ipfs_transformers import FunnelForPreTraining +from .ipfs_transformers import FunnelForQuestionAnswering +from .ipfs_transformers import FunnelForSequenceClassification +from .ipfs_transformers import FunnelForTokenClassification +from .ipfs_transformers import FunnelModel +from .ipfs_transformers import FunnelPreTrainedModel +from .ipfs_transformers import FunnelTokenizer +from .ipfs_transformers import FunnelTokenizerFast +from .ipfs_transformers import FuyuConfig +from .ipfs_transformers import FuyuForCausalLM +from .ipfs_transformers import FuyuImageProcessor +from .ipfs_transformers import FuyuPreTrainedModel +from .ipfs_transformers import FuyuProcessor +from .ipfs_transformers import GLPNConfig +from .ipfs_transformers import GLPNFeatureExtractor +from .ipfs_transformers import GLPNForDepthEstimation +from .ipfs_transformers import GLPNImageProcessor +from .ipfs_transformers import GLPNModel +from .ipfs_transformers import GLPNPreTrainedModel +from .ipfs_transformers import GPT2Config +from .ipfs_transformers import GPT2DoubleHeadsModel +from .ipfs_transformers import GPT2ForQuestionAnswering +from .ipfs_transformers import GPT2ForSequenceClassification +from .ipfs_transformers import GPT2ForTokenClassification +from .ipfs_transformers import GPT2LMHeadModel +from .ipfs_transformers import GPT2Model +from .ipfs_transformers import GPT2PreTrainedModel +from .ipfs_transformers import GPT2Tokenizer +from .ipfs_transformers import GPT2TokenizerFast +from .ipfs_transformers import GPTBigCodeConfig +from .ipfs_transformers import GPTBigCodeForCausalLM +from .ipfs_transformers import GPTBigCodeForSequenceClassification +from .ipfs_transformers import GPTBigCodeForTokenClassification +from .ipfs_transformers import GPTBigCodeModel +from .ipfs_transformers import GPTBigCodePreTrainedModel +from .ipfs_transformers import GPTJConfig +from .ipfs_transformers import GPTJForCausalLM +from .ipfs_transformers import GPTJForQuestionAnswering +from .ipfs_transformers import GPTJForSequenceClassification +from .ipfs_transformers import GPTJModel +from .ipfs_transformers import GPTJPreTrainedModel +from .ipfs_transformers import GPTNeoConfig +from .ipfs_transformers import GPTNeoForCausalLM +from .ipfs_transformers import GPTNeoForQuestionAnswering +from .ipfs_transformers import GPTNeoForSequenceClassification +from .ipfs_transformers import GPTNeoForTokenClassification +from .ipfs_transformers import GPTNeoModel +from .ipfs_transformers import GPTNeoPreTrainedModel +from .ipfs_transformers import GPTNeoXConfig +from .ipfs_transformers import GPTNeoXForCausalLM +from .ipfs_transformers import GPTNeoXForQuestionAnswering +from .ipfs_transformers import GPTNeoXForSequenceClassification +from .ipfs_transformers import GPTNeoXForTokenClassification +from .ipfs_transformers import GPTNeoXJapaneseConfig +from .ipfs_transformers import GPTNeoXJapaneseForCausalLM +from .ipfs_transformers import GPTNeoXJapaneseModel +from .ipfs_transformers import GPTNeoXJapanesePreTrainedModel +from .ipfs_transformers import GPTNeoXJapaneseTokenizer +from .ipfs_transformers import GPTNeoXModel +from .ipfs_transformers import GPTNeoXPreTrainedModel +from .ipfs_transformers import GPTNeoXTokenizerFast +from .ipfs_transformers import GPTSanJapaneseConfig +from .ipfs_transformers import GPTSanJapaneseForConditionalGeneration +from .ipfs_transformers import GPTSanJapaneseModel +from .ipfs_transformers import GPTSanJapanesePreTrainedModel +from .ipfs_transformers import GPTSanJapaneseTokenizer +from .ipfs_transformers import GemmaConfig +from .ipfs_transformers import GemmaForCausalLM +from .ipfs_transformers import GemmaForSequenceClassification +from .ipfs_transformers import GemmaModel +from .ipfs_transformers import GemmaPreTrainedModel +from .ipfs_transformers import GemmaTokenizerFast +from .ipfs_transformers import GenerationConfig +from .ipfs_transformers import GitConfig +from .ipfs_transformers import GitForCausalLM +from .ipfs_transformers import GitModel +from .ipfs_transformers import GitPreTrainedModel +from .ipfs_transformers import GitProcessor +from .ipfs_transformers import GitVisionConfig +from .ipfs_transformers import GitVisionModel +from .ipfs_transformers import GraphormerConfig +from .ipfs_transformers import GraphormerForGraphClassification +from .ipfs_transformers import GraphormerModel +from .ipfs_transformers import GraphormerPreTrainedModel +from .ipfs_transformers import GroupViTConfig +from .ipfs_transformers import GroupViTModel +from .ipfs_transformers import GroupViTPreTrainedModel +from .ipfs_transformers import GroupViTTextConfig +from .ipfs_transformers import GroupViTTextModel +from .ipfs_transformers import GroupViTVisionConfig +from .ipfs_transformers import GroupViTVisionModel +from .ipfs_transformers import HerbertTokenizer +from .ipfs_transformers import HerbertTokenizerFast +from .ipfs_transformers import HubertConfig +from .ipfs_transformers import HubertForCTC +from .ipfs_transformers import HubertForSequenceClassification +from .ipfs_transformers import HubertModel +from .ipfs_transformers import HubertPreTrainedModel +from .ipfs_transformers import IBertConfig +from .ipfs_transformers import IBertForMaskedLM +from .ipfs_transformers import IBertForMultipleChoice +from .ipfs_transformers import IBertForQuestionAnswering +from .ipfs_transformers import IBertForSequenceClassification +from .ipfs_transformers import IBertForTokenClassification +from .ipfs_transformers import IBertModel +from .ipfs_transformers import IBertPreTrainedModel +from .ipfs_transformers import IdeficsConfig +from .ipfs_transformers import IdeficsForVisionText2Text +from .ipfs_transformers import IdeficsImageProcessor +from .ipfs_transformers import IdeficsModel +from .ipfs_transformers import IdeficsPreTrainedModel +from .ipfs_transformers import IdeficsProcessor +from .ipfs_transformers import ImageGPTConfig +from .ipfs_transformers import ImageGPTFeatureExtractor +from .ipfs_transformers import ImageGPTForCausalImageModeling +from .ipfs_transformers import ImageGPTForImageClassification +from .ipfs_transformers import ImageGPTImageProcessor +from .ipfs_transformers import ImageGPTModel +from .ipfs_transformers import ImageGPTPreTrainedModel +from .ipfs_transformers import ImageProcessingMixin +from .ipfs_transformers import InformerConfig +from .ipfs_transformers import InformerForPrediction +from .ipfs_transformers import InformerModel +from .ipfs_transformers import InformerPreTrainedModel +from .ipfs_transformers import InstructBlipConfig +from .ipfs_transformers import InstructBlipForConditionalGeneration +from .ipfs_transformers import InstructBlipPreTrainedModel +from .ipfs_transformers import InstructBlipProcessor +from .ipfs_transformers import InstructBlipQFormerConfig +from .ipfs_transformers import InstructBlipQFormerModel +from .ipfs_transformers import InstructBlipVisionConfig +from .ipfs_transformers import InstructBlipVisionModel +from .ipfs_transformers import JukeboxConfig +from .ipfs_transformers import JukeboxModel +from .ipfs_transformers import JukeboxPreTrainedModel +from .ipfs_transformers import JukeboxPrior +from .ipfs_transformers import JukeboxPriorConfig +from .ipfs_transformers import JukeboxTokenizer +from .ipfs_transformers import JukeboxVQVAE +from .ipfs_transformers import JukeboxVQVAEConfig +from .ipfs_transformers import Kosmos2Config +from .ipfs_transformers import Kosmos2ForConditionalGeneration +from .ipfs_transformers import Kosmos2Model +from .ipfs_transformers import Kosmos2PreTrainedModel +from .ipfs_transformers import Kosmos2Processor +from .ipfs_transformers import LEDConfig +from .ipfs_transformers import LEDForConditionalGeneration +from .ipfs_transformers import LEDForQuestionAnswering +from .ipfs_transformers import LEDForSequenceClassification +from .ipfs_transformers import LEDModel +from .ipfs_transformers import LEDPreTrainedModel +from .ipfs_transformers import LEDTokenizer +from .ipfs_transformers import LEDTokenizerFast +from .ipfs_transformers import LayoutLMConfig +from .ipfs_transformers import LayoutLMForMaskedLM +from .ipfs_transformers import LayoutLMForQuestionAnswering +from .ipfs_transformers import LayoutLMForSequenceClassification +from .ipfs_transformers import LayoutLMForTokenClassification +from .ipfs_transformers import LayoutLMModel +from .ipfs_transformers import LayoutLMPreTrainedModel +from .ipfs_transformers import LayoutLMTokenizer +from .ipfs_transformers import LayoutLMTokenizerFast +from .ipfs_transformers import LayoutLMv2Config +from .ipfs_transformers import LayoutLMv2FeatureExtractor +from .ipfs_transformers import LayoutLMv2ForQuestionAnswering +from .ipfs_transformers import LayoutLMv2ForSequenceClassification +from .ipfs_transformers import LayoutLMv2ForTokenClassification +from .ipfs_transformers import LayoutLMv2ImageProcessor +from .ipfs_transformers import LayoutLMv2Model +from .ipfs_transformers import LayoutLMv2PreTrainedModel +from .ipfs_transformers import LayoutLMv2Processor +from .ipfs_transformers import LayoutLMv2Tokenizer +from .ipfs_transformers import LayoutLMv2TokenizerFast +from .ipfs_transformers import LayoutLMv3Config +from .ipfs_transformers import LayoutLMv3FeatureExtractor +from .ipfs_transformers import LayoutLMv3ForQuestionAnswering +from .ipfs_transformers import LayoutLMv3ForSequenceClassification +from .ipfs_transformers import LayoutLMv3ForTokenClassification +from .ipfs_transformers import LayoutLMv3ImageProcessor +from .ipfs_transformers import LayoutLMv3Model +from .ipfs_transformers import LayoutLMv3PreTrainedModel +from .ipfs_transformers import LayoutLMv3Processor +from .ipfs_transformers import LayoutLMv3Tokenizer +from .ipfs_transformers import LayoutLMv3TokenizerFast +from .ipfs_transformers import LayoutXLMProcessor +from .ipfs_transformers import LayoutXLMTokenizerFast +from .ipfs_transformers import LevitConfig +from .ipfs_transformers import LevitFeatureExtractor +from .ipfs_transformers import LevitForImageClassification +from .ipfs_transformers import LevitForImageClassificationWithTeacher +from .ipfs_transformers import LevitImageProcessor +from .ipfs_transformers import LevitModel +from .ipfs_transformers import LevitPreTrainedModel +from .ipfs_transformers import LiltConfig +from .ipfs_transformers import LiltForQuestionAnswering +from .ipfs_transformers import LiltForSequenceClassification +from .ipfs_transformers import LiltForTokenClassification +from .ipfs_transformers import LiltModel +from .ipfs_transformers import LiltPreTrainedModel +from .ipfs_transformers import LlamaConfig +from .ipfs_transformers import LlamaForCausalLM +from .ipfs_transformers import LlamaForQuestionAnswering +from .ipfs_transformers import LlamaForSequenceClassification +from .ipfs_transformers import LlamaModel +from .ipfs_transformers import LlamaPreTrainedModel +from .ipfs_transformers import LlamaTokenizerFast +from .ipfs_transformers import LlavaConfig +from .ipfs_transformers import LlavaForConditionalGeneration +from .ipfs_transformers import LlavaNextConfig +from .ipfs_transformers import LlavaNextForConditionalGeneration +from .ipfs_transformers import LlavaNextImageProcessor +from .ipfs_transformers import LlavaNextPreTrainedModel +from .ipfs_transformers import LlavaNextProcessor +from .ipfs_transformers import LlavaPreTrainedModel +from .ipfs_transformers import LlavaProcessor +from .ipfs_transformers import LocalAgent +from .ipfs_transformers import LongT5Config +from .ipfs_transformers import LongT5EncoderModel +from .ipfs_transformers import LongT5ForConditionalGeneration +from .ipfs_transformers import LongT5Model +from .ipfs_transformers import LongT5PreTrainedModel +from .ipfs_transformers import LongformerConfig +from .ipfs_transformers import LongformerForMaskedLM +from .ipfs_transformers import LongformerForMultipleChoice +from .ipfs_transformers import LongformerForQuestionAnswering +from .ipfs_transformers import LongformerForSequenceClassification +from .ipfs_transformers import LongformerForTokenClassification +from .ipfs_transformers import LongformerModel +from .ipfs_transformers import LongformerPreTrainedModel +from .ipfs_transformers import LongformerTokenizer +from .ipfs_transformers import LongformerTokenizerFast +from .ipfs_transformers import LukeConfig +from .ipfs_transformers import LukeForEntityClassification +from .ipfs_transformers import LukeForEntityPairClassification +from .ipfs_transformers import LukeForEntitySpanClassification +from .ipfs_transformers import LukeForMaskedLM +from .ipfs_transformers import LukeForMultipleChoice +from .ipfs_transformers import LukeForQuestionAnswering +from .ipfs_transformers import LukeForSequenceClassification +from .ipfs_transformers import LukeForTokenClassification +from .ipfs_transformers import LukeModel +from .ipfs_transformers import LukePreTrainedModel +from .ipfs_transformers import LukeTokenizer +from .ipfs_transformers import LxmertConfig +from .ipfs_transformers import LxmertForPreTraining +from .ipfs_transformers import LxmertForQuestionAnswering +from .ipfs_transformers import LxmertModel +from .ipfs_transformers import LxmertPreTrainedModel +from .ipfs_transformers import LxmertTokenizer +from .ipfs_transformers import LxmertTokenizerFast +from .ipfs_transformers import M2M100Config +from .ipfs_transformers import M2M100ForConditionalGeneration +from .ipfs_transformers import M2M100Model +from .ipfs_transformers import M2M100PreTrainedModel +from .ipfs_transformers import MBart50TokenizerFast +from .ipfs_transformers import MBartConfig +from .ipfs_transformers import MBartForCausalLM +from .ipfs_transformers import MBartForConditionalGeneration +from .ipfs_transformers import MBartForQuestionAnswering +from .ipfs_transformers import MBartForSequenceClassification +from .ipfs_transformers import MBartModel +from .ipfs_transformers import MBartPreTrainedModel +from .ipfs_transformers import MBartTokenizerFast +from .ipfs_transformers import MCTCTConfig +from .ipfs_transformers import MCTCTFeatureExtractor +from .ipfs_transformers import MCTCTForCTC +from .ipfs_transformers import MCTCTModel +from .ipfs_transformers import MCTCTPreTrainedModel +from .ipfs_transformers import MCTCTProcessor +from .ipfs_transformers import MPNetConfig +from .ipfs_transformers import MPNetForMaskedLM +from .ipfs_transformers import MPNetForMultipleChoice +from .ipfs_transformers import MPNetForQuestionAnswering +from .ipfs_transformers import MPNetForSequenceClassification +from .ipfs_transformers import MPNetForTokenClassification +from .ipfs_transformers import MPNetModel +from .ipfs_transformers import MPNetPreTrainedModel +from .ipfs_transformers import MPNetTokenizer +from .ipfs_transformers import MPNetTokenizerFast +from .ipfs_transformers import MT5Config +from .ipfs_transformers import MT5EncoderModel +from .ipfs_transformers import MT5ForConditionalGeneration +from .ipfs_transformers import MT5ForQuestionAnswering +from .ipfs_transformers import MT5ForSequenceClassification +from .ipfs_transformers import MT5ForTokenClassification +from .ipfs_transformers import MT5Model +from .ipfs_transformers import MT5PreTrainedModel +from .ipfs_transformers import T5TokenizerFast +from .ipfs_transformers import MambaConfig +from .ipfs_transformers import MambaForCausalLM +from .ipfs_transformers import MambaModel +from .ipfs_transformers import MambaPreTrainedModel +from .ipfs_transformers import MarianConfig +from .ipfs_transformers import MarianForCausalLM +from .ipfs_transformers import MarianMTModel +from .ipfs_transformers import MarianModel +from .ipfs_transformers import MarkupLMConfig +from .ipfs_transformers import MarkupLMFeatureExtractor +from .ipfs_transformers import MarkupLMForQuestionAnswering +from .ipfs_transformers import MarkupLMForSequenceClassification +from .ipfs_transformers import MarkupLMForTokenClassification +from .ipfs_transformers import MarkupLMModel +from .ipfs_transformers import MarkupLMPreTrainedModel +from .ipfs_transformers import MarkupLMProcessor +from .ipfs_transformers import MarkupLMTokenizer +from .ipfs_transformers import MarkupLMTokenizerFast +from .ipfs_transformers import Mask2FormerConfig +from .ipfs_transformers import Mask2FormerForUniversalSegmentation +from .ipfs_transformers import Mask2FormerImageProcessor +from .ipfs_transformers import Mask2FormerModel +from .ipfs_transformers import Mask2FormerPreTrainedModel +from .ipfs_transformers import MaskFormerConfig +from .ipfs_transformers import MaskFormerFeatureExtractor +from .ipfs_transformers import MaskFormerForInstanceSegmentation +from .ipfs_transformers import MaskFormerImageProcessor +from .ipfs_transformers import MaskFormerModel +from .ipfs_transformers import MaskFormerPreTrainedModel +from .ipfs_transformers import MaskFormerSwinBackbone +from .ipfs_transformers import MaskFormerSwinConfig +from .ipfs_transformers import MegaConfig +from .ipfs_transformers import MegaForCausalLM +from .ipfs_transformers import MegaForMaskedLM +from .ipfs_transformers import MegaForMultipleChoice +from .ipfs_transformers import MegaForQuestionAnswering +from .ipfs_transformers import MegaForSequenceClassification +from .ipfs_transformers import MegaForTokenClassification +from .ipfs_transformers import MegaModel +from .ipfs_transformers import MegaPreTrainedModel +from .ipfs_transformers import MegatronBertConfig +from .ipfs_transformers import MegatronBertForCausalLM +from .ipfs_transformers import MegatronBertForMaskedLM +from .ipfs_transformers import MegatronBertForMultipleChoice +from .ipfs_transformers import MegatronBertForNextSentencePrediction +from .ipfs_transformers import MegatronBertForPreTraining +from .ipfs_transformers import MegatronBertForQuestionAnswering +from .ipfs_transformers import MegatronBertForSequenceClassification +from .ipfs_transformers import MegatronBertForTokenClassification +from .ipfs_transformers import MegatronBertModel +from .ipfs_transformers import MegatronBertPreTrainedModel +from .ipfs_transformers import MgpstrConfig +from .ipfs_transformers import MgpstrForSceneTextRecognition +from .ipfs_transformers import MgpstrModel +from .ipfs_transformers import MgpstrPreTrainedModel +from .ipfs_transformers import MgpstrProcessor +from .ipfs_transformers import MgpstrTokenizer +from .ipfs_transformers import MistralConfig +from .ipfs_transformers import MistralForCausalLM +from .ipfs_transformers import MistralForSequenceClassification +from .ipfs_transformers import MistralModel +from .ipfs_transformers import MistralPreTrainedModel +from .ipfs_transformers import MixtralConfig +from .ipfs_transformers import MixtralForCausalLM +from .ipfs_transformers import MixtralForSequenceClassification +from .ipfs_transformers import MixtralModel +from .ipfs_transformers import MixtralPreTrainedModel +from .ipfs_transformers import MobileBertConfig +from .ipfs_transformers import MobileBertForMaskedLM +from .ipfs_transformers import MobileBertForMultipleChoice +from .ipfs_transformers import MobileBertForNextSentencePrediction +from .ipfs_transformers import MobileBertForPreTraining +from .ipfs_transformers import MobileBertForQuestionAnswering +from .ipfs_transformers import MobileBertForSequenceClassification +from .ipfs_transformers import MobileBertForTokenClassification +from .ipfs_transformers import MobileBertModel +from .ipfs_transformers import MobileBertPreTrainedModel +from .ipfs_transformers import MobileBertTokenizer +from .ipfs_transformers import MobileBertTokenizerFast +from .ipfs_transformers import MobileNetV1Config +from .ipfs_transformers import MobileNetV1FeatureExtractor +from .ipfs_transformers import MobileNetV1ForImageClassification +from .ipfs_transformers import MobileNetV1ImageProcessor +from .ipfs_transformers import MobileNetV1Model +from .ipfs_transformers import MobileNetV1PreTrainedModel +from .ipfs_transformers import MobileNetV2Config +from .ipfs_transformers import MobileNetV2FeatureExtractor +from .ipfs_transformers import MobileNetV2ForImageClassification +from .ipfs_transformers import MobileNetV2ForSemanticSegmentation +from .ipfs_transformers import MobileNetV2ImageProcessor +from .ipfs_transformers import MobileNetV2Model +from .ipfs_transformers import MobileNetV2PreTrainedModel +from .ipfs_transformers import MobileViTConfig +from .ipfs_transformers import MobileViTFeatureExtractor +from .ipfs_transformers import MobileViTForImageClassification +from .ipfs_transformers import MobileViTForSemanticSegmentation +from .ipfs_transformers import MobileViTImageProcessor +from .ipfs_transformers import MobileViTModel +from .ipfs_transformers import MobileViTPreTrainedModel +from .ipfs_transformers import MobileViTV2Config +from .ipfs_transformers import MobileViTV2ForImageClassification +from .ipfs_transformers import MobileViTV2ForSemanticSegmentation +from .ipfs_transformers import MobileViTV2Model +from .ipfs_transformers import MobileViTV2PreTrainedModel +from .ipfs_transformers import ModelCard +from .ipfs_transformers import MptConfig +from .ipfs_transformers import MptForCausalLM +from .ipfs_transformers import MptForQuestionAnswering +from .ipfs_transformers import MptForSequenceClassification +from .ipfs_transformers import MptForTokenClassification +from .ipfs_transformers import MptModel +from .ipfs_transformers import MptPreTrainedModel +from .ipfs_transformers import MraConfig +from .ipfs_transformers import MraForMaskedLM +from .ipfs_transformers import MraForMultipleChoice +from .ipfs_transformers import MraForQuestionAnswering +from .ipfs_transformers import MraForSequenceClassification +from .ipfs_transformers import MraForTokenClassification +from .ipfs_transformers import MraModel +from .ipfs_transformers import MraPreTrainedModel +from .ipfs_transformers import MusicgenConfig +from .ipfs_transformers import MusicgenDecoderConfig +from .ipfs_transformers import MusicgenForCausalLM +from .ipfs_transformers import MusicgenForConditionalGeneration +from .ipfs_transformers import MusicgenMelodyConfig +from .ipfs_transformers import MusicgenMelodyDecoderConfig +from .ipfs_transformers import MusicgenMelodyForCausalLM +from .ipfs_transformers import MusicgenMelodyForConditionalGeneration +from .ipfs_transformers import MusicgenMelodyModel +from .ipfs_transformers import MusicgenMelodyPreTrainedModel +from .ipfs_transformers import MusicgenModel +from .ipfs_transformers import MusicgenPreTrainedModel +from .ipfs_transformers import MusicgenProcessor +from .ipfs_transformers import MvpConfig +from .ipfs_transformers import MvpForCausalLM +from .ipfs_transformers import MvpForConditionalGeneration +from .ipfs_transformers import MvpForQuestionAnswering +from .ipfs_transformers import MvpForSequenceClassification +from .ipfs_transformers import MvpModel +from .ipfs_transformers import MvpPreTrainedModel +from .ipfs_transformers import MvpTokenizer +from .ipfs_transformers import MvpTokenizerFast +from .ipfs_transformers import NatBackbone +from .ipfs_transformers import NatConfig +from .ipfs_transformers import NatForImageClassification +from .ipfs_transformers import NatModel +from .ipfs_transformers import NatPreTrainedModel +from .ipfs_transformers import NezhaConfig +from .ipfs_transformers import NezhaForMaskedLM +from .ipfs_transformers import NezhaForMultipleChoice +from .ipfs_transformers import NezhaForNextSentencePrediction +from .ipfs_transformers import NezhaForPreTraining +from .ipfs_transformers import NezhaForQuestionAnswering +from .ipfs_transformers import NezhaForSequenceClassification +from .ipfs_transformers import NezhaForTokenClassification +from .ipfs_transformers import NezhaModel +from .ipfs_transformers import NezhaPreTrainedModel +from .ipfs_transformers import NllbMoeConfig +from .ipfs_transformers import NllbMoeForConditionalGeneration +from .ipfs_transformers import NllbMoeModel +from .ipfs_transformers import NllbMoePreTrainedModel +from .ipfs_transformers import NllbTokenizerFast +from .ipfs_transformers import NougatImageProcessor +from .ipfs_transformers import NougatProcessor +from .ipfs_transformers import NougatTokenizerFast +from .ipfs_transformers import NystromformerConfig +from .ipfs_transformers import NystromformerForMaskedLM +from .ipfs_transformers import NystromformerForMultipleChoice +from .ipfs_transformers import NystromformerForQuestionAnswering +from .ipfs_transformers import NystromformerForSequenceClassification +from .ipfs_transformers import NystromformerForTokenClassification +from .ipfs_transformers import NystromformerModel +from .ipfs_transformers import NystromformerPreTrainedModel +from .ipfs_transformers import OPTConfig +from .ipfs_transformers import OPTForCausalLM +from .ipfs_transformers import OPTForQuestionAnswering +from .ipfs_transformers import OPTForSequenceClassification +from .ipfs_transformers import OPTModel +from .ipfs_transformers import OPTPreTrainedModel +from .ipfs_transformers import OneFormerConfig +from .ipfs_transformers import OneFormerForUniversalSegmentation +from .ipfs_transformers import OneFormerImageProcessor +from .ipfs_transformers import OneFormerModel +from .ipfs_transformers import OneFormerPreTrainedModel +from .ipfs_transformers import OneFormerProcessor +from .ipfs_transformers import OpenAIGPTConfig +from .ipfs_transformers import OpenAIGPTDoubleHeadsModel +from .ipfs_transformers import OpenAIGPTForSequenceClassification +from .ipfs_transformers import OpenAIGPTLMHeadModel +from .ipfs_transformers import OpenAIGPTModel +from .ipfs_transformers import OpenAIGPTPreTrainedModel +from .ipfs_transformers import OpenAIGPTTokenizer +from .ipfs_transformers import OpenAIGPTTokenizerFast +from .ipfs_transformers import OpenLlamaConfig +from .ipfs_transformers import OpenLlamaForCausalLM +from .ipfs_transformers import OpenLlamaForSequenceClassification +from .ipfs_transformers import OpenLlamaModel +from .ipfs_transformers import OpenLlamaPreTrainedModel +from .ipfs_transformers import OwlViTConfig +from .ipfs_transformers import OwlViTFeatureExtractor +from .ipfs_transformers import OwlViTForObjectDetection +from .ipfs_transformers import OwlViTImageProcessor +from .ipfs_transformers import OwlViTModel +from .ipfs_transformers import OwlViTPreTrainedModel +from .ipfs_transformers import OwlViTProcessor +from .ipfs_transformers import OwlViTTextConfig +from .ipfs_transformers import OwlViTTextModel +from .ipfs_transformers import OwlViTVisionConfig +from .ipfs_transformers import OwlViTVisionModel +from .ipfs_transformers import Owlv2Config +from .ipfs_transformers import Owlv2ForObjectDetection +from .ipfs_transformers import Owlv2ImageProcessor +from .ipfs_transformers import Owlv2Model +from .ipfs_transformers import Owlv2PreTrainedModel +from .ipfs_transformers import Owlv2Processor +from .ipfs_transformers import Owlv2TextConfig +from .ipfs_transformers import Owlv2TextModel +from .ipfs_transformers import Owlv2VisionConfig +from .ipfs_transformers import Owlv2VisionModel +from .ipfs_transformers import PLBartConfig +from .ipfs_transformers import PLBartForCausalLM +from .ipfs_transformers import PLBartForConditionalGeneration +from .ipfs_transformers import PLBartForSequenceClassification +from .ipfs_transformers import PLBartModel +from .ipfs_transformers import PLBartPreTrainedModel +from .ipfs_transformers import PatchTSMixerConfig +from .ipfs_transformers import PatchTSMixerForPrediction +from .ipfs_transformers import PatchTSMixerForPretraining +from .ipfs_transformers import PatchTSMixerForRegression +from .ipfs_transformers import PatchTSMixerForTimeSeriesClassification +from .ipfs_transformers import PatchTSMixerModel +from .ipfs_transformers import PatchTSMixerPreTrainedModel +from .ipfs_transformers import PatchTSTConfig +from .ipfs_transformers import PatchTSTForClassification +from .ipfs_transformers import PatchTSTForPrediction +from .ipfs_transformers import PatchTSTForPretraining +from .ipfs_transformers import PatchTSTForRegression +from .ipfs_transformers import PatchTSTModel +from .ipfs_transformers import PatchTSTPreTrainedModel +from .ipfs_transformers import PegasusConfig +from .ipfs_transformers import PegasusForCausalLM +from .ipfs_transformers import PegasusForConditionalGeneration +from .ipfs_transformers import PegasusModel +from .ipfs_transformers import PegasusPreTrainedModel +from .ipfs_transformers import PegasusTokenizerFast +from .ipfs_transformers import PegasusXConfig +from .ipfs_transformers import PegasusXForConditionalGeneration +from .ipfs_transformers import PegasusXModel +from .ipfs_transformers import PegasusXPreTrainedModel +from .ipfs_transformers import PerceiverConfig +from .ipfs_transformers import PerceiverFeatureExtractor +from .ipfs_transformers import PerceiverForImageClassificationConvProcessing +from .ipfs_transformers import PerceiverForImageClassificationFourier +from .ipfs_transformers import PerceiverForImageClassificationLearned +from .ipfs_transformers import PerceiverForMaskedLM +from .ipfs_transformers import PerceiverForMultimodalAutoencoding +from .ipfs_transformers import PerceiverForOpticalFlow +from .ipfs_transformers import PerceiverForSequenceClassification +from .ipfs_transformers import PerceiverImageProcessor +from .ipfs_transformers import PerceiverModel +from .ipfs_transformers import PerceiverPreTrainedModel +from .ipfs_transformers import PerceiverTokenizer +from .ipfs_transformers import PersimmonConfig +from .ipfs_transformers import PersimmonForCausalLM +from .ipfs_transformers import PersimmonForSequenceClassification +from .ipfs_transformers import PersimmonModel +from .ipfs_transformers import PersimmonPreTrainedModel +from .ipfs_transformers import PhiConfig +from .ipfs_transformers import PhiForCausalLM +from .ipfs_transformers import PhiForSequenceClassification +from .ipfs_transformers import PhiForTokenClassification +from .ipfs_transformers import PhiModel +from .ipfs_transformers import PhiPreTrainedModel +from .ipfs_transformers import PhobertTokenizer +from .ipfs_transformers import Pix2StructConfig +from .ipfs_transformers import Pix2StructForConditionalGeneration +from .ipfs_transformers import Pix2StructImageProcessor +from .ipfs_transformers import Pix2StructPreTrainedModel +from .ipfs_transformers import Pix2StructProcessor +from .ipfs_transformers import Pix2StructTextConfig +from .ipfs_transformers import Pix2StructTextModel +from .ipfs_transformers import Pix2StructVisionConfig +from .ipfs_transformers import Pix2StructVisionModel +from .ipfs_transformers import PoolFormerConfig +from .ipfs_transformers import PoolFormerFeatureExtractor +from .ipfs_transformers import PoolFormerForImageClassification +from .ipfs_transformers import PoolFormerImageProcessor +from .ipfs_transformers import PoolFormerModel +from .ipfs_transformers import PoolFormerPreTrainedModel +from .ipfs_transformers import Pop2PianoConfig +from .ipfs_transformers import Pop2PianoForConditionalGeneration +from .ipfs_transformers import Pop2PianoPreTrainedModel +from .ipfs_transformers import PreTrainedModel +from .ipfs_transformers import PreTrainedTokenizer +from .ipfs_transformers import PreTrainedTokenizerBase +from .ipfs_transformers import PreTrainedTokenizerFast +from .ipfs_transformers import PretrainedBartModel +from .ipfs_transformers import PretrainedConfig +from .ipfs_transformers import PretrainedFSMTModel +from .ipfs_transformers import ProcessorMixin +from .ipfs_transformers import ProphetNetConfig +from .ipfs_transformers import ProphetNetDecoder +from .ipfs_transformers import ProphetNetEncoder +from .ipfs_transformers import ProphetNetForCausalLM +from .ipfs_transformers import ProphetNetForConditionalGeneration +from .ipfs_transformers import ProphetNetModel +from .ipfs_transformers import ProphetNetPreTrainedModel +from .ipfs_transformers import ProphetNetTokenizer +from .ipfs_transformers import PvtConfig +from .ipfs_transformers import PvtForImageClassification +from .ipfs_transformers import PvtImageProcessor +from .ipfs_transformers import PvtModel +from .ipfs_transformers import PvtPreTrainedModel +from .ipfs_transformers import PvtV2Backbone +from .ipfs_transformers import PvtV2Config +from .ipfs_transformers import PvtV2ForImageClassification +from .ipfs_transformers import PvtV2Model +from .ipfs_transformers import PvtV2PreTrainedModel +from .ipfs_transformers import QDQBertConfig +from .ipfs_transformers import QDQBertForMaskedLM +from .ipfs_transformers import QDQBertForMultipleChoice +from .ipfs_transformers import QDQBertForNextSentencePrediction +from .ipfs_transformers import QDQBertForQuestionAnswering +from .ipfs_transformers import QDQBertForSequenceClassification +from .ipfs_transformers import QDQBertForTokenClassification +from .ipfs_transformers import QDQBertLMHeadModel +from .ipfs_transformers import QDQBertModel +from .ipfs_transformers import QDQBertPreTrainedModel +from .ipfs_transformers import Qwen2Config +from .ipfs_transformers import Qwen2ForCausalLM +from .ipfs_transformers import Qwen2ForSequenceClassification +from .ipfs_transformers import Qwen2Model +from .ipfs_transformers import Qwen2PreTrainedModel +from .ipfs_transformers import Qwen2Tokenizer +from .ipfs_transformers import Qwen2TokenizerFast +from .ipfs_transformers import RagConfig +from .ipfs_transformers import RagModel +from .ipfs_transformers import RagPreTrainedModel +from .ipfs_transformers import RagRetriever +from .ipfs_transformers import RagSequenceForGeneration +from .ipfs_transformers import RagTokenForGeneration +from .ipfs_transformers import RagTokenizer +from .ipfs_transformers import RealmConfig +from .ipfs_transformers import RealmEmbedder +from .ipfs_transformers import RealmForOpenQA +from .ipfs_transformers import RealmKnowledgeAugEncoder +from .ipfs_transformers import RealmPreTrainedModel +from .ipfs_transformers import RealmReader +from .ipfs_transformers import RealmRetriever +from .ipfs_transformers import RealmScorer +from .ipfs_transformers import RealmTokenizer +from .ipfs_transformers import RealmTokenizerFast +from .ipfs_transformers import ReformerConfig +from .ipfs_transformers import ReformerForMaskedLM +from .ipfs_transformers import ReformerForQuestionAnswering +from .ipfs_transformers import ReformerForSequenceClassification +from .ipfs_transformers import ReformerModel +from .ipfs_transformers import ReformerModelWithLMHead +from .ipfs_transformers import ReformerPreTrainedModel +from .ipfs_transformers import ReformerTokenizerFast +from .ipfs_transformers import RegNetConfig +from .ipfs_transformers import RegNetForImageClassification +from .ipfs_transformers import RegNetModel +from .ipfs_transformers import RegNetPreTrainedModel +from .ipfs_transformers import RemBertConfig +from .ipfs_transformers import RemBertForCausalLM +from .ipfs_transformers import RemBertForMaskedLM +from .ipfs_transformers import RemBertForMultipleChoice +from .ipfs_transformers import RemBertForQuestionAnswering +from .ipfs_transformers import RemBertForSequenceClassification +from .ipfs_transformers import RemBertForTokenClassification +from .ipfs_transformers import RemBertModel +from .ipfs_transformers import RemBertPreTrainedModel +from .ipfs_transformers import RemBertTokenizerFast +from .ipfs_transformers import ResNetBackbone +from .ipfs_transformers import ResNetConfig +from .ipfs_transformers import ResNetForImageClassification +from .ipfs_transformers import ResNetModel +from .ipfs_transformers import ResNetPreTrainedModel +from .ipfs_transformers import RetriBertConfig +from .ipfs_transformers import RetriBertModel +from .ipfs_transformers import RetriBertPreTrainedModel +from .ipfs_transformers import RetriBertTokenizer +from .ipfs_transformers import RetriBertTokenizerFast +from .ipfs_transformers import RoCBertConfig +from .ipfs_transformers import RoCBertForCausalLM +from .ipfs_transformers import RoCBertForMaskedLM +from .ipfs_transformers import RoCBertForMultipleChoice +from .ipfs_transformers import RoCBertForPreTraining +from .ipfs_transformers import RoCBertForQuestionAnswering +from .ipfs_transformers import RoCBertForSequenceClassification +from .ipfs_transformers import RoCBertForTokenClassification +from .ipfs_transformers import RoCBertModel +from .ipfs_transformers import RoCBertPreTrainedModel +from .ipfs_transformers import RoCBertTokenizer +from .ipfs_transformers import RoFormerConfig +from .ipfs_transformers import RoFormerForCausalLM +from .ipfs_transformers import RoFormerForMaskedLM +from .ipfs_transformers import RoFormerForMultipleChoice +from .ipfs_transformers import RoFormerForQuestionAnswering +from .ipfs_transformers import RoFormerForSequenceClassification +from .ipfs_transformers import RoFormerForTokenClassification +from .ipfs_transformers import RoFormerModel +from .ipfs_transformers import RoFormerPreTrainedModel +from .ipfs_transformers import RoFormerTokenizer +from .ipfs_transformers import RoFormerTokenizerFast +from .ipfs_transformers import RobertaConfig +from .ipfs_transformers import RobertaForCausalLM +from .ipfs_transformers import RobertaForMaskedLM +from .ipfs_transformers import RobertaForMultipleChoice +from .ipfs_transformers import RobertaForQuestionAnswering +from .ipfs_transformers import RobertaForSequenceClassification +from .ipfs_transformers import RobertaForTokenClassification +from .ipfs_transformers import RobertaModel +from .ipfs_transformers import RobertaPreLayerNormConfig +from .ipfs_transformers import RobertaPreLayerNormForCausalLM +from .ipfs_transformers import RobertaPreLayerNormForMaskedLM +from .ipfs_transformers import RobertaPreLayerNormForMultipleChoice +from .ipfs_transformers import RobertaPreLayerNormForQuestionAnswering +from .ipfs_transformers import RobertaPreLayerNormForSequenceClassification +from .ipfs_transformers import RobertaPreLayerNormForTokenClassification +from .ipfs_transformers import RobertaPreLayerNormModel +from .ipfs_transformers import RobertaPreLayerNormPreTrainedModel +from .ipfs_transformers import RobertaPreTrainedModel +from .ipfs_transformers import RobertaTokenizer +from .ipfs_transformers import RobertaTokenizerFast +from .ipfs_transformers import RwkvConfig +from .ipfs_transformers import RwkvForCausalLM +from .ipfs_transformers import RwkvModel +from .ipfs_transformers import RwkvPreTrainedModel +from .ipfs_transformers import SEWConfig +from .ipfs_transformers import SEWDConfig +from .ipfs_transformers import SEWDForCTC +from .ipfs_transformers import SEWDForSequenceClassification +from .ipfs_transformers import SEWDModel +from .ipfs_transformers import SEWDPreTrainedModel +from .ipfs_transformers import SEWForCTC +from .ipfs_transformers import SEWForSequenceClassification +from .ipfs_transformers import SEWModel +from .ipfs_transformers import SEWPreTrainedModel +from .ipfs_transformers import SamConfig +from .ipfs_transformers import SamImageProcessor +from .ipfs_transformers import SamMaskDecoderConfig +from .ipfs_transformers import SamModel +from .ipfs_transformers import SamPreTrainedModel +from .ipfs_transformers import SamProcessor +from .ipfs_transformers import SamPromptEncoderConfig +from .ipfs_transformers import SamVisionConfig +from .ipfs_transformers import SeamlessM4TCodeHifiGan +from .ipfs_transformers import SeamlessM4TConfig +from .ipfs_transformers import SeamlessM4TFeatureExtractor +from .ipfs_transformers import SeamlessM4TForSpeechToSpeech +from .ipfs_transformers import SeamlessM4TForSpeechToText +from .ipfs_transformers import SeamlessM4TForTextToSpeech +from .ipfs_transformers import SeamlessM4TForTextToText +from .ipfs_transformers import SeamlessM4TModel +from .ipfs_transformers import SeamlessM4TPreTrainedModel +from .ipfs_transformers import SeamlessM4TProcessor +from .ipfs_transformers import SeamlessM4TTextToUnitForConditionalGeneration +from .ipfs_transformers import SeamlessM4TTextToUnitModel +from .ipfs_transformers import SeamlessM4TTokenizerFast +from .ipfs_transformers import SeamlessM4Tv2Config +from .ipfs_transformers import SeamlessM4Tv2ForSpeechToSpeech +from .ipfs_transformers import SeamlessM4Tv2ForSpeechToText +from .ipfs_transformers import SeamlessM4Tv2ForTextToSpeech +from .ipfs_transformers import SeamlessM4Tv2ForTextToText +from .ipfs_transformers import SeamlessM4Tv2Model +from .ipfs_transformers import SeamlessM4Tv2PreTrainedModel +from .ipfs_transformers import SegGptConfig +from .ipfs_transformers import SegGptForImageSegmentation +from .ipfs_transformers import SegGptImageProcessor +from .ipfs_transformers import SegGptModel +from .ipfs_transformers import SegGptPreTrainedModel +from .ipfs_transformers import SegformerConfig +from .ipfs_transformers import SegformerDecodeHead +from .ipfs_transformers import SegformerFeatureExtractor +from .ipfs_transformers import SegformerForImageClassification +from .ipfs_transformers import SegformerForSemanticSegmentation +from .ipfs_transformers import SegformerImageProcessor +from .ipfs_transformers import SegformerModel +from .ipfs_transformers import SegformerPreTrainedModel +from .ipfs_transformers import SequenceFeatureExtractor +from .ipfs_transformers import SiglipConfig +from .ipfs_transformers import SiglipForImageClassification +from .ipfs_transformers import SiglipImageProcessor +from .ipfs_transformers import SiglipModel +from .ipfs_transformers import SiglipPreTrainedModel +from .ipfs_transformers import SiglipProcessor +from .ipfs_transformers import SiglipTextConfig +from .ipfs_transformers import SiglipTextModel +from .ipfs_transformers import SiglipVisionConfig +from .ipfs_transformers import SiglipVisionModel +from .ipfs_transformers import Speech2Text2Config +from .ipfs_transformers import Speech2Text2ForCausalLM +from .ipfs_transformers import Speech2Text2PreTrainedModel +from .ipfs_transformers import Speech2Text2Processor +from .ipfs_transformers import Speech2Text2Tokenizer +from .ipfs_transformers import Speech2TextConfig +from .ipfs_transformers import Speech2TextFeatureExtractor +from .ipfs_transformers import Speech2TextForConditionalGeneration +from .ipfs_transformers import Speech2TextModel +from .ipfs_transformers import Speech2TextPreTrainedModel +from .ipfs_transformers import Speech2TextProcessor +from .ipfs_transformers import SpeechEncoderDecoderConfig +from .ipfs_transformers import SpeechEncoderDecoderModel +from .ipfs_transformers import SpeechT5Config +from .ipfs_transformers import SpeechT5FeatureExtractor +from .ipfs_transformers import SpeechT5ForSpeechToSpeech +from .ipfs_transformers import SpeechT5ForSpeechToText +from .ipfs_transformers import SpeechT5ForTextToSpeech +from .ipfs_transformers import SpeechT5HifiGan +from .ipfs_transformers import SpeechT5HifiGanConfig +from .ipfs_transformers import SpeechT5Model +from .ipfs_transformers import SpeechT5PreTrainedModel +from .ipfs_transformers import SpeechT5Processor +from .ipfs_transformers import SplinterConfig +from .ipfs_transformers import SplinterForPreTraining +from .ipfs_transformers import SplinterForQuestionAnswering +from .ipfs_transformers import SplinterModel +from .ipfs_transformers import SplinterPreTrainedModel +from .ipfs_transformers import SplinterTokenizer +from .ipfs_transformers import SplinterTokenizerFast +from .ipfs_transformers import SqueezeBertConfig +from .ipfs_transformers import SqueezeBertForMaskedLM +from .ipfs_transformers import SqueezeBertForMultipleChoice +from .ipfs_transformers import SqueezeBertForQuestionAnswering +from .ipfs_transformers import SqueezeBertForSequenceClassification +from .ipfs_transformers import SqueezeBertForTokenClassification +from .ipfs_transformers import SqueezeBertModel +from .ipfs_transformers import SqueezeBertPreTrainedModel +from .ipfs_transformers import SqueezeBertTokenizer +from .ipfs_transformers import SqueezeBertTokenizerFast +from .ipfs_transformers import StableLmConfig +from .ipfs_transformers import StableLmForCausalLM +from .ipfs_transformers import StableLmForSequenceClassification +from .ipfs_transformers import StableLmModel +from .ipfs_transformers import StableLmPreTrainedModel +from .ipfs_transformers import Starcoder2Config +from .ipfs_transformers import Starcoder2ForCausalLM +from .ipfs_transformers import Starcoder2ForSequenceClassification +from .ipfs_transformers import Starcoder2Model +from .ipfs_transformers import Starcoder2PreTrainedModel +from .ipfs_transformers import SuperPointConfig +from .ipfs_transformers import SuperPointForKeypointDetection +from .ipfs_transformers import SuperPointImageProcessor +from .ipfs_transformers import SuperPointPreTrainedModel +from .ipfs_transformers import SwiftFormerConfig +from .ipfs_transformers import SwiftFormerForImageClassification +from .ipfs_transformers import SwiftFormerModel +from .ipfs_transformers import SwiftFormerPreTrainedModel +from .ipfs_transformers import Swin2SRConfig +from .ipfs_transformers import Swin2SRForImageSuperResolution +from .ipfs_transformers import Swin2SRImageProcessor +from .ipfs_transformers import Swin2SRModel +from .ipfs_transformers import Swin2SRPreTrainedModel +from .ipfs_transformers import SwinBackbone +from .ipfs_transformers import SwinConfig +from .ipfs_transformers import SwinForImageClassification +from .ipfs_transformers import SwinForMaskedImageModeling +from .ipfs_transformers import SwinModel +from .ipfs_transformers import SwinPreTrainedModel +from .ipfs_transformers import Swinv2Backbone +from .ipfs_transformers import Swinv2Config +from .ipfs_transformers import Swinv2ForImageClassification +from .ipfs_transformers import Swinv2ForMaskedImageModeling +from .ipfs_transformers import Swinv2Model +from .ipfs_transformers import Swinv2PreTrainedModel +from .ipfs_transformers import SwitchTransformersConfig +from .ipfs_transformers import SwitchTransformersEncoderModel +from .ipfs_transformers import SwitchTransformersForConditionalGeneration +from .ipfs_transformers import SwitchTransformersModel +from .ipfs_transformers import SwitchTransformersPreTrainedModel +from .ipfs_transformers import T5Config +from .ipfs_transformers import T5EncoderModel +from .ipfs_transformers import T5ForConditionalGeneration +from .ipfs_transformers import T5ForQuestionAnswering +from .ipfs_transformers import T5ForSequenceClassification +from .ipfs_transformers import T5ForTokenClassification +from .ipfs_transformers import T5Model +from .ipfs_transformers import T5PreTrainedModel +from .ipfs_transformers import T5TokenizerFast +from .ipfs_transformers import TableTransformerConfig +from .ipfs_transformers import TableTransformerForObjectDetection +from .ipfs_transformers import TableTransformerModel +from .ipfs_transformers import TableTransformerPreTrainedModel +from .ipfs_transformers import TapasConfig +from .ipfs_transformers import TapasForMaskedLM +from .ipfs_transformers import TapasForQuestionAnswering +from .ipfs_transformers import TapasForSequenceClassification +from .ipfs_transformers import TapasModel +from .ipfs_transformers import TapasPreTrainedModel +from .ipfs_transformers import TapasTokenizer +from .ipfs_transformers import TapexTokenizer +from .ipfs_transformers import TimeSeriesTransformerConfig +from .ipfs_transformers import TimeSeriesTransformerForPrediction +from .ipfs_transformers import TimeSeriesTransformerModel +from .ipfs_transformers import TimeSeriesTransformerPreTrainedModel +from .ipfs_transformers import TimesformerConfig +from .ipfs_transformers import TimesformerForVideoClassification +from .ipfs_transformers import TimesformerModel +from .ipfs_transformers import TimesformerPreTrainedModel +from .ipfs_transformers import TimmBackbone +from .ipfs_transformers import TimmBackboneConfig +from .ipfs_transformers import TrOCRConfig +from .ipfs_transformers import TrOCRForCausalLM +from .ipfs_transformers import TrOCRPreTrainedModel +from .ipfs_transformers import TrOCRProcessor +from .ipfs_transformers import TrajectoryTransformerConfig +from .ipfs_transformers import TrajectoryTransformerModel +from .ipfs_transformers import TrajectoryTransformerPreTrainedModel +from .ipfs_transformers import TransfoXLConfig +from .ipfs_transformers import TransfoXLCorpus +from .ipfs_transformers import TransfoXLForSequenceClassification +from .ipfs_transformers import TransfoXLLMHeadModel +from .ipfs_transformers import TransfoXLModel +from .ipfs_transformers import TransfoXLPreTrainedModel +from .ipfs_transformers import TransfoXLTokenizer +from .ipfs_transformers import TvltConfig +from .ipfs_transformers import TvltFeatureExtractor +from .ipfs_transformers import TvltForAudioVisualClassification +from .ipfs_transformers import TvltForPreTraining +from .ipfs_transformers import TvltImageProcessor +from .ipfs_transformers import TvltModel +from .ipfs_transformers import TvltPreTrainedModel +from .ipfs_transformers import TvltProcessor +from .ipfs_transformers import TvpConfig +from .ipfs_transformers import TvpForVideoGrounding +from .ipfs_transformers import TvpImageProcessor +from .ipfs_transformers import TvpModel +from .ipfs_transformers import TvpPreTrainedModel +from .ipfs_transformers import TvpProcessor +from .ipfs_transformers import UMT5Config +from .ipfs_transformers import UMT5EncoderModel +from .ipfs_transformers import UMT5ForConditionalGeneration +from .ipfs_transformers import UMT5ForQuestionAnswering +from .ipfs_transformers import UMT5ForSequenceClassification +from .ipfs_transformers import UMT5ForTokenClassification +from .ipfs_transformers import UMT5Model +from .ipfs_transformers import UMT5PreTrainedModel +from .ipfs_transformers import UdopConfig +from .ipfs_transformers import UdopEncoderModel +from .ipfs_transformers import UdopForConditionalGeneration +from .ipfs_transformers import UdopModel +from .ipfs_transformers import UdopPreTrainedModel +from .ipfs_transformers import UdopProcessor +from .ipfs_transformers import UdopTokenizerFast +from .ipfs_transformers import UniSpeechConfig +from .ipfs_transformers import UniSpeechForCTC +from .ipfs_transformers import UniSpeechForPreTraining +from .ipfs_transformers import UniSpeechForSequenceClassification +from .ipfs_transformers import UniSpeechModel +from .ipfs_transformers import UniSpeechPreTrainedModel +from .ipfs_transformers import UniSpeechSatConfig +from .ipfs_transformers import UniSpeechSatForAudioFrameClassification +from .ipfs_transformers import UniSpeechSatForCTC +from .ipfs_transformers import UniSpeechSatForPreTraining +from .ipfs_transformers import UniSpeechSatForSequenceClassification +from .ipfs_transformers import UniSpeechSatForXVector +from .ipfs_transformers import UniSpeechSatModel +from .ipfs_transformers import UniSpeechSatPreTrainedModel +from .ipfs_transformers import UnivNetConfig +from .ipfs_transformers import UnivNetFeatureExtractor +from .ipfs_transformers import UnivNetModel +from .ipfs_transformers import UperNetConfig +from .ipfs_transformers import UperNetForSemanticSegmentation +from .ipfs_transformers import UperNetPreTrainedModel +from .ipfs_transformers import VanConfig +from .ipfs_transformers import VanForImageClassification +from .ipfs_transformers import VanModel +from .ipfs_transformers import VanPreTrainedModel +from .ipfs_transformers import ViTConfig +from .ipfs_transformers import ViTFeatureExtractor +from .ipfs_transformers import ViTForImageClassification +from .ipfs_transformers import ViTForMaskedImageModeling +from .ipfs_transformers import ViTHybridConfig +from .ipfs_transformers import ViTHybridForImageClassification +from .ipfs_transformers import ViTHybridImageProcessor +from .ipfs_transformers import ViTHybridModel +from .ipfs_transformers import ViTHybridPreTrainedModel +from .ipfs_transformers import ViTImageProcessor +from .ipfs_transformers import ViTMAEConfig +from .ipfs_transformers import ViTMAEForPreTraining +from .ipfs_transformers import ViTMAEModel +from .ipfs_transformers import ViTMAEPreTrainedModel +from .ipfs_transformers import ViTMSNConfig +from .ipfs_transformers import ViTMSNForImageClassification +from .ipfs_transformers import ViTMSNModel +from .ipfs_transformers import ViTMSNPreTrainedModel +from .ipfs_transformers import ViTModel +from .ipfs_transformers import ViTPreTrainedModel +from .ipfs_transformers import VideoMAEConfig +from .ipfs_transformers import VideoMAEFeatureExtractor +from .ipfs_transformers import VideoMAEForPreTraining +from .ipfs_transformers import VideoMAEForVideoClassification +from .ipfs_transformers import VideoMAEImageProcessor +from .ipfs_transformers import VideoMAEModel +from .ipfs_transformers import VideoMAEPreTrainedModel +from .ipfs_transformers import ViltConfig +from .ipfs_transformers import ViltFeatureExtractor +from .ipfs_transformers import ViltForImageAndTextRetrieval +from .ipfs_transformers import ViltForImagesAndTextClassification +from .ipfs_transformers import ViltForMaskedLM +from .ipfs_transformers import ViltForQuestionAnswering +from .ipfs_transformers import ViltForTokenClassification +from .ipfs_transformers import ViltImageProcessor +from .ipfs_transformers import ViltModel +from .ipfs_transformers import ViltPreTrainedModel +from .ipfs_transformers import ViltProcessor +from .ipfs_transformers import VipLlavaConfig +from .ipfs_transformers import VipLlavaForConditionalGeneration +from .ipfs_transformers import VipLlavaPreTrainedModel +from .ipfs_transformers import VisionEncoderDecoderConfig +from .ipfs_transformers import VisionEncoderDecoderModel +from .ipfs_transformers import VisionTextDualEncoderConfig +from .ipfs_transformers import VisionTextDualEncoderModel +from .ipfs_transformers import VisionTextDualEncoderProcessor +from .ipfs_transformers import VisualBertConfig +from .ipfs_transformers import VisualBertForMultipleChoice +from .ipfs_transformers import VisualBertForPreTraining +from .ipfs_transformers import VisualBertForQuestionAnswering +from .ipfs_transformers import VisualBertForRegionToPhraseAlignment +from .ipfs_transformers import VisualBertForVisualReasoning +from .ipfs_transformers import VisualBertModel +from .ipfs_transformers import VisualBertPreTrainedModel +from .ipfs_transformers import VitDetBackbone +from .ipfs_transformers import VitDetConfig +from .ipfs_transformers import VitDetModel +from .ipfs_transformers import VitDetPreTrainedModel +from .ipfs_transformers import VitMatteConfig +from .ipfs_transformers import VitMatteForImageMatting +from .ipfs_transformers import VitMatteImageProcessor +from .ipfs_transformers import VitMattePreTrainedModel +from .ipfs_transformers import VitsConfig +from .ipfs_transformers import VitsModel +from .ipfs_transformers import VitsPreTrainedModel +from .ipfs_transformers import VitsTokenizer +from .ipfs_transformers import VivitConfig +from .ipfs_transformers import VivitForVideoClassification +from .ipfs_transformers import VivitImageProcessor +from .ipfs_transformers import VivitModel +from .ipfs_transformers import VivitPreTrainedModel +from .ipfs_transformers import Wav2Vec2BertConfig +from .ipfs_transformers import Wav2Vec2BertForAudioFrameClassification +from .ipfs_transformers import Wav2Vec2BertForCTC +from .ipfs_transformers import Wav2Vec2BertForSequenceClassification +from .ipfs_transformers import Wav2Vec2BertForXVector +from .ipfs_transformers import Wav2Vec2BertModel +from .ipfs_transformers import Wav2Vec2BertPreTrainedModel +from .ipfs_transformers import Wav2Vec2BertProcessor +from .ipfs_transformers import Wav2Vec2CTCTokenizer +from .ipfs_transformers import Wav2Vec2Config +from .ipfs_transformers import Wav2Vec2ConformerConfig +from .ipfs_transformers import Wav2Vec2ConformerForAudioFrameClassification +from .ipfs_transformers import Wav2Vec2ConformerForCTC +from .ipfs_transformers import Wav2Vec2ConformerForPreTraining +from .ipfs_transformers import Wav2Vec2ConformerForSequenceClassification +from .ipfs_transformers import Wav2Vec2ConformerForXVector +from .ipfs_transformers import Wav2Vec2ConformerModel +from .ipfs_transformers import Wav2Vec2ConformerPreTrainedModel +from .ipfs_transformers import Wav2Vec2FeatureExtractor +from .ipfs_transformers import Wav2Vec2ForAudioFrameClassification +from .ipfs_transformers import Wav2Vec2ForCTC +from .ipfs_transformers import Wav2Vec2ForMaskedLM +from .ipfs_transformers import Wav2Vec2ForPreTraining +from .ipfs_transformers import Wav2Vec2ForSequenceClassification +from .ipfs_transformers import Wav2Vec2ForXVector +from .ipfs_transformers import Wav2Vec2Model +from .ipfs_transformers import Wav2Vec2PhonemeCTCTokenizer +from .ipfs_transformers import Wav2Vec2PreTrainedModel +from .ipfs_transformers import Wav2Vec2Processor +from .ipfs_transformers import Wav2Vec2ProcessorWithLM +from .ipfs_transformers import Wav2Vec2Tokenizer +from .ipfs_transformers import WavLMConfig +from .ipfs_transformers import WavLMForAudioFrameClassification +from .ipfs_transformers import WavLMForCTC +from .ipfs_transformers import WavLMForSequenceClassification +from .ipfs_transformers import WavLMForXVector +from .ipfs_transformers import WavLMModel +from .ipfs_transformers import WavLMPreTrainedModel +from .ipfs_transformers import WhisperConfig +from .ipfs_transformers import WhisperFeatureExtractor +from .ipfs_transformers import WhisperForAudioClassification +from .ipfs_transformers import WhisperForCausalLM +from .ipfs_transformers import WhisperForConditionalGeneration +from .ipfs_transformers import WhisperModel +from .ipfs_transformers import WhisperPreTrainedModel +from .ipfs_transformers import WhisperProcessor +from .ipfs_transformers import WhisperTokenizer +from .ipfs_transformers import WhisperTokenizerFast +from .ipfs_transformers import XCLIPConfig +from .ipfs_transformers import XCLIPModel +from .ipfs_transformers import XCLIPPreTrainedModel +from .ipfs_transformers import XCLIPProcessor +from .ipfs_transformers import XCLIPTextConfig +from .ipfs_transformers import XCLIPTextModel +from .ipfs_transformers import XCLIPVisionConfig +from .ipfs_transformers import XCLIPVisionModel +from .ipfs_transformers import XGLMConfig +from .ipfs_transformers import XGLMForCausalLM +from .ipfs_transformers import XGLMModel +from .ipfs_transformers import XGLMPreTrainedModel +from .ipfs_transformers import XGLMTokenizerFast +from .ipfs_transformers import XLMConfig +from .ipfs_transformers import XLMForMultipleChoice +from .ipfs_transformers import XLMForQuestionAnswering +from .ipfs_transformers import XLMForQuestionAnsweringSimple +from .ipfs_transformers import XLMForSequenceClassification +from .ipfs_transformers import XLMForTokenClassification +from .ipfs_transformers import XLMModel +from .ipfs_transformers import XLMPreTrainedModel +from .ipfs_transformers import XLMProphetNetConfig +from .ipfs_transformers import XLMProphetNetDecoder +from .ipfs_transformers import XLMProphetNetEncoder +from .ipfs_transformers import XLMProphetNetForCausalLM +from .ipfs_transformers import XLMProphetNetForConditionalGeneration +from .ipfs_transformers import XLMProphetNetModel +from .ipfs_transformers import XLMProphetNetPreTrainedModel +from .ipfs_transformers import XLMRobertaConfig +from .ipfs_transformers import XLMRobertaForCausalLM +from .ipfs_transformers import XLMRobertaForMaskedLM +from .ipfs_transformers import XLMRobertaForMultipleChoice +from .ipfs_transformers import XLMRobertaForQuestionAnswering +from .ipfs_transformers import XLMRobertaForSequenceClassification +from .ipfs_transformers import XLMRobertaForTokenClassification +from .ipfs_transformers import XLMRobertaModel +from .ipfs_transformers import XLMRobertaPreTrainedModel +from .ipfs_transformers import XLMRobertaTokenizerFast +from .ipfs_transformers import XLMRobertaXLConfig +from .ipfs_transformers import XLMRobertaXLForCausalLM +from .ipfs_transformers import XLMRobertaXLForMaskedLM +from .ipfs_transformers import XLMRobertaXLForMultipleChoice +from .ipfs_transformers import XLMRobertaXLForQuestionAnswering +from .ipfs_transformers import XLMRobertaXLForSequenceClassification +from .ipfs_transformers import XLMRobertaXLForTokenClassification +from .ipfs_transformers import XLMRobertaXLModel +from .ipfs_transformers import XLMRobertaXLPreTrainedModel +from .ipfs_transformers import XLMTokenizer +from .ipfs_transformers import XLMWithLMHeadModel +from .ipfs_transformers import XLNetConfig +from .ipfs_transformers import XLNetForMultipleChoice +from .ipfs_transformers import XLNetForQuestionAnswering +from .ipfs_transformers import XLNetForQuestionAnsweringSimple +from .ipfs_transformers import XLNetForSequenceClassification +from .ipfs_transformers import XLNetForTokenClassification +from .ipfs_transformers import XLNetLMHeadModel +from .ipfs_transformers import XLNetModel +from .ipfs_transformers import XLNetPreTrainedModel +from .ipfs_transformers import XLNetTokenizerFast +from .ipfs_transformers import XmodConfig +from .ipfs_transformers import XmodForCausalLM +from .ipfs_transformers import XmodForMaskedLM +from .ipfs_transformers import XmodForMultipleChoice +from .ipfs_transformers import XmodForQuestionAnswering +from .ipfs_transformers import XmodForSequenceClassification +from .ipfs_transformers import XmodForTokenClassification +from .ipfs_transformers import XmodModel +from .ipfs_transformers import XmodPreTrainedModel +from .ipfs_transformers import YolosConfig +from .ipfs_transformers import YolosFeatureExtractor +from .ipfs_transformers import YolosForObjectDetection +from .ipfs_transformers import YolosImageProcessor +from .ipfs_transformers import YolosModel +from .ipfs_transformers import YolosPreTrainedModel +from .ipfs_transformers import YosoConfig +from .ipfs_transformers import YosoForMaskedLM +from .ipfs_transformers import YosoForMultipleChoice +from .ipfs_transformers import YosoForQuestionAnswering +from .ipfs_transformers import YosoForSequenceClassification +from .ipfs_transformers import YosoForTokenClassification +from .ipfs_transformers import YosoModel +from .ipfs_transformers import YosoPreTrainedModel diff --git a/ipfs_transformers/ipfs_kit.py b/ipfs_transformers/ipfs_kit.py index 192365d..b4318ff 100755 --- a/ipfs_transformers/ipfs_kit.py +++ b/ipfs_transformers/ipfs_kit.py @@ -16,10 +16,13 @@ import shutil import subprocess parent_dir = os.path.dirname(os.path.dirname(__file__)) -ipfs_lib_dir = os.path.join(parent_dir, "ipfs_kit_lib") -sys.path.append(ipfs_lib_dir) +#ipfs_lib_dir = os.path.join(parent_dir, "ipfs_kit_lib") +#ipfs_lib_dir2 = os.path.join(os.path.dirname(__file__), "ipfs_kit_lib") +ipfs_transformers_dir = os.path.join(parent_dir, "ipfs_transformers") +#sys.path.append(ipfs_lib_dir) +#sys.path.append(ipfs_lib_dir2) +sys.path.append(ipfs_transformers_dir) from ipfs_kit_lib import install_ipfs, ipfs, ipfs_cluster_ctl, ipfs_cluster_service, ipfs_cluster_follow, ipget -from ipfs_kit_lib import install_ipfs class ipfs_kit: def __init__(self, resources, meta=None): @@ -30,7 +33,7 @@ def __init__(self, resources, meta=None): self.ipfs_set_config_value = self.ipfs_set_config_value self.test_install = self.test_install self.ipfs_get = self.ipget_download_object - self.install_ipfs = install_ipfs.install_ipfs(None, None) + self.install_ipfs = install_ipfs.install_ipfs_daemon(None) if meta is not None: if "config" in meta: diff --git a/ipfs_transformers/ipfs_kit_lib/__init__.py b/ipfs_transformers/ipfs_kit_lib/__init__.py new file mode 100644 index 0000000..05ef945 --- /dev/null +++ b/ipfs_transformers/ipfs_kit_lib/__init__.py @@ -0,0 +1 @@ +from .install_ipfs import install_ipfs \ No newline at end of file diff --git a/ipfs_transformers/ipfs_kit_lib/identity.json b/ipfs_transformers/ipfs_kit_lib/identity.json index 6d92c11..8488599 100755 --- a/ipfs_transformers/ipfs_kit_lib/identity.json +++ b/ipfs_transformers/ipfs_kit_lib/identity.json @@ -1,4 +1,4 @@ { "id": "12D3KooWECihD8h6TooNoqJAVFDsP5MgUiVcy7XYRRmkFM3yyYME", - "private_key": "" + "private_key": "CAESQCdeFjj9HSI9+LDwsHA84hhfKj7GoLVWTL3yD6FWUqCXQSi7xqLG+6V+9ROfWtlfs3wR8UsuifuWSVoSHkfaPnE=" } \ No newline at end of file diff --git a/ipfs_transformers/ipfs_kit_lib/install_ipfs.py b/ipfs_transformers/ipfs_kit_lib/install_ipfs.py index a2eb641..e0fd999 100644 --- a/ipfs_transformers/ipfs_kit_lib/install_ipfs.py +++ b/ipfs_transformers/ipfs_kit_lib/install_ipfs.py @@ -4,6 +4,7 @@ import json import math import sys +import time test_folder = os.path.dirname(os.path.dirname(__file__)) + "/test" sys.path.append(test_folder) import test_fio @@ -14,7 +15,7 @@ After=network.target [Service] -ExecStart=/usr/local/bin/ipfs daemon --enable-gc --enable-pubsub-experiment +ExecStart=/usr/local/bin/ipfs daemon --enable-gc --enable-pubsub-experiment \" Restart=on-failure User=root Group=root @@ -39,6 +40,8 @@ """ +#NOTE FIX THIS SYSTEMCTL SERVICE + ipfs_cluster_follow = """ [Unit] Description=IPFS Cluster Follow Daemon @@ -92,6 +95,7 @@ def __init__(self, resources, meta=None): if "ipfs_path" in meta: if meta['ipfs_path'] is not None: self.ipfs_path = meta['ipfs_path'] + #NOTE bug invalid permissions check if not os.path.exists(self.ipfs_path): os.makedirs(self.ipfs_path) test_disk = test_fio.test_fio(None) @@ -173,17 +177,20 @@ def install_ipfs_daemon(self): command = "ipfs --version" results = subprocess.check_output(command, shell=True) results = results.decode() - with open("/etc/systemd/system/ipfs.service", "w") as file: - file.write(ipfs_service) - command = "systemctl enable ipfs" - results = subprocess.check_output(command, shell=True) - results = results.decode() + + if os.getuid() == 0: + with open("/etc/systemd/system/ipfs.service", "w") as file: + file.write(ipfs_service) + + else: + #NOTE: Clean this up and make better logging or drop the error all together + print('You need to be root to write to /etc/systemd/system/ipfs.service') if "ipfs" in results: return True else: return False - + def install_ipfs_cluster_follow(self): try: detect = subprocess.check_output("which ipfs-cluster-follow",shell=True) @@ -209,11 +216,14 @@ def install_ipfs_cluster_follow(self): command = "ipfs-cluster-follow --version" results = subprocess.check_output(command, shell=True) results = results.decode() - with open("/etc/systemd/system/ipfs-cluster-follow.service", "w") as file: - file.write(ipfs_cluster_follow) - command = "systemctl enable ipfs-cluster-follow" - results = subprocess.check_output(command, shell=True) - results = results.decode() + + if os.geteuid() == 0: + with open("/etc/systemd/system/ipfs-cluster-follow.service", "w") as file: + file.write(ipfs_cluster_follow) + else: + #NOTE: Clean this up and make better logging or drop the error all together + print('You need to be root to write to /etc/systemd/system/ipfs-cluster-follow.service') + if "ipfs-cluster-follow" in results: return True else: @@ -274,11 +284,15 @@ def install_ipfs_cluster_service(self): command = "ipfs-cluster-service --version" results = subprocess.check_output(command, shell=True) results = results.decode() - with open("/etc/systemd/system/ipfs-cluster-service.service", "w") as file: - file.write(ipfs_cluster_service) - command = "systemctl enable ipfs-cluster-service" - results = subprocess.check_output(command, shell=True) - results = results.decode() + + if os.geteuid() == 0: + with open("/etc/systemd/system/ipfs-cluster-service.service", "w") as file: + file.write(ipfs_cluster_service) + + else: + #NOTE: Clean this up and make better logging or drop the error all together + print('You need to be root to write to /etc/systemd/system/ipfs-cluster-service.service') + if "ipfs-cluster-service" in results: return True else: @@ -350,9 +364,20 @@ def config_ipfs_cluster_service(self, **kwargs): raise Exception("ipfs_path is None") ipfs_path = os.path.join(ipfs_path, "ipfs") + "/" try: - command1 = "IPFS_PATH="+ ipfs_path +" ipfs-cluster-service init -f" - results1 = subprocess.check_output(command1, shell=True) - results1 = results1.decode() + if os.getuid() == 0: + command0 = "systemctl enable ipfs-cluster-service" + results0 = subprocess.check_output(command0, shell=True) + + command1 = "IPFS_PATH="+ ipfs_path +" ipfs-cluster-service init -f" + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + + else: + command1 = "IPFS_PATH="+ ipfs_path +" ipfs-cluster-service init -f" + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + # TODO: Add test cases to all the config functions + except Exception as e: results1 = str(e) finally: @@ -483,10 +508,25 @@ def config_ipfs_cluster_follow(self, **kwargs): this_dir = os.path.dirname(__file__) dst_path = ipfs_path try: - #command1 = "IPFS_CLUSTER_PATH="+ ipfs_path +" ipfs-cluster-follow ipfs_cluster init " + cluster_name - command1 = "ipfs-cluster-follow " + cluster_name + " init " + ipfs_path - results1 = subprocess.check_output(command1, shell=True) - results1 = results1.decode() + if os.getuid() == 0: + # Add enabler for ipfs-cluster-follow from the install into the config + command0 = "systemctl enable ipfs-cluster-follow" + results0 = subprocess.check_output(command0, shell=True) + + #command1 = "IPFS_CLUSTER_PATH="+ ipfs_path +" ipfs-cluster-follow ipfs_cluster init " + cluster_name + command1 = "ipfs-cluster-follow " + cluster_name + " init " + ipfs_path + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + + # TODO: Add test cases + else: + #command1 = "IPFS_CLUSTER_PATH="+ ipfs_path +" ipfs-cluster-follow ipfs_cluster init " + cluster_name + command1 = "ipfs-cluster-follow " + cluster_name + " init " + ipfs_path + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + + print('You need to be root to write to /etc/systemd/system/ipfs-cluster-follow.service') + except Exception as e: results1 = str(e) finally: @@ -534,8 +574,15 @@ def config_ipfs_cluster_follow(self, **kwargs): finally: pass new_ipfs_cluster_follow = ipfs_cluster_follow.replace("run"," "+ cluster_name + " run") - with open("/etc/systemd/system/ipfs-cluster-follow.service", "w") as file: - file.write(new_ipfs_cluster_follow) + + if os.geteuid() == 0: + with open("/etc/systemd/system/ipfs-cluster-follow.service", "w") as file: + file.write(new_ipfs_cluster_follow) + else: + #NOTE: Clean this up and make better logging or drop the error all together + print('You need to be root to write to /etc/systemd/system/ipfs-cluster-follow.service') + + # TODO: Add test cases to all the config functions #command = "ps -ef | grep ipfs | grep -v grep | awk '{print $2}' | xargs kill -9" #results = subprocess.run(command, shell=True) @@ -574,8 +621,11 @@ def config_ipfs(self, **kwargs): if self.ipfs_path is None: raise Exception("ipfs_path is None") + if ipfs_path[-1] != "/": + ipfs_path = ipfs_path + "/ipfs/" + else: + ipfs_path = ipfs_path + "ipfs/" - ipfs_path = ipfs_path + "ipfs/" os.makedirs(ipfs_path, exist_ok=True) if disk_stats is not None and ipfs_path is not None and disk_stats is not None: try: @@ -630,6 +680,7 @@ def config_ipfs(self, **kwargs): if peer != "": try: command6 = "IPFS_PATH="+ ipfs_path + " ipfs bootstrap add " + peer + # TODO: Permission error on the config when installing as user results6 = subprocess.check_output(command6, shell=True) results6 = results6.decode() except Exception as e: @@ -645,10 +696,58 @@ def config_ipfs(self, **kwargs): pass if os.geteuid() == 0: - ipfs_service_text = ipfs_service.replace("ExecStart=","ExecStart=export IPFS_PATH="+ ipfs_path + " && ") + ipfs_service_text = ipfs_service.replace("ExecStart=","ExecStart= bash -c \"export IPFS_PATH="+ ipfs_path + " && ") with open("/etc/systemd/system/ipfs.service", "w") as file: file.write(ipfs_service_text) + + try: + # Reload daemon + command11 = "systemctl daemon-reload" + results11 = subprocess.Popen(command11, shell=True) + + # Enable service + command0 = "systemctl enable ipfs" + results0 = subprocess.Popen(command0, shell=True) + + # Start daemon + command22 = "systemctl start ipfs" + results22 = subprocess.Popen(command22, shell=True) + + # Check if daemon is running + command3 = "ps -ef | grep ipfs | grep daemon | grep -v grep | wc -l" + results3 = subprocess.check_output(command3, shell=True) + results3 = results3.decode() + + if(int(results3) > 0): + # Downloads image from ipfs as a test + command5 = "bash -c \"export IPFS_PATH="+ ipfs_path + " && ipfs cat /ipfs/QmSgvgwxZGaBLqkGyWemEDqikCqU52XxsYLKtdy3vGZ8uq >" + ipfs_path + "/test.jpg \" " + results5 = subprocess.Popen(command5, shell=True) + + # Time out for 2 seconds to allow the file to download + time.sleep(5) + + if os.path.exists(ipfs_path + "/test.jpg"): + if os.path.getsize(ipfs_path + "/test.jpg") > 0: + # Remove the test file + pass + else: + raise Exception("ipfs failed to download test file") + + os.remove(ipfs_path + "/test.jpg") + + else: + raise Exception("ipfs failed to download test file") + + except Exception as e: + # Should this return an error or log it like line 673 + return str(e) + + finally: + command6 = "systemctl stop ipfs" + results6 = subprocess.Popen(command6, shell=True) + else: + #NOTE: Not sure if this needs to logged or excepted print('You need to be root to write to /etc/systemd/system/ipfs.service') if "exit" not in results1: @@ -718,7 +817,10 @@ def run_ipfs_daemon(self, **kwargs): else: ipfs_path = self.ipfs_path - ipfs_path = ipfs_path + "ipfs/" + if ipfs_path[-1] != "/": + ipfs_path = ipfs_path + "/ipfs/" + else: + ipfs_path = ipfs_path + "ipfs/" os.makedirs(ipfs_path, exist_ok=True) try: @@ -735,14 +837,112 @@ def uninstall_ipfs(self): try: command = "ps -ef | grep ipfs | grep daemon | grep -v grep | awk '{print $2}' | xargs kill -9" results = subprocess.run(command, shell=True) + + command = "which ipfs" + results = subprocess.check_output(command, shell=True) + results = results.decode() + + command = "sudo rm " + results + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf " + self.ipfs_path + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf /etc/systemd/system/ipfs.service" + results = subprocess.check_output(command, shell=True) + + return True + except Exception as e: + results = str(e) + return False + finally: + pass + + def uninstall_ipfs_cluster_service(self): + # TODO: This needs to be tested + try: + command = "ps -ef | grep ipfs-cluster-service | grep -v grep | awk '{print $2}' | xargs kill -9" + results = subprocess.run(command, shell=True) + + command = "which ipfs-cluster-service" + results = subprocess.check_output(command, shell=True) + results = results.decode() + + command = "sudo rm " + results + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf ~/.ipfs-cluster" + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf /etc/systemd/system/ipfs-cluster-service.service" + results = subprocess.check_output(command, shell=True) + + return True + except Exception as e: + results = str(e) + return False + finally: + pass + + + + def uninstall_ipfs_cluster_follow(self): + try: command = "ps -ef | grep ipfs-cluster-follow | grep -v grep | awk '{print $2}' | xargs kill -9" - results = subprocess.run(command, shell=True) - command = "rm -rf " + self.ipfs_path + results = subprocess.run(command, shell=True) + + command = "which ipfs-cluster-follow" + results = subprocess.check_output(command, shell=True) + results = results.decode() + + command = "sudo rm " + results + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf ~/.ipfs-cluster-follow" + results = subprocess.check_output(command, shell=True) + + command = "sudo rm -rf /etc/systemd/system/ipfs-cluster-follow.service" + results = subprocess.check_output(command, shell=True) + + return True + + except Exception as e: + results = str(e) + return False + finally: + pass + + + def uninstall_ipfs_cluster_ctl(self): + try: + command = "ps -ef | grep ipfs-cluster-ctl | grep -v grep | awk '{print $2}' | xargs kill -9" + results = subprocess.run(command, shell=True) + + command = "which ipfs-cluster-ctl" results = subprocess.check_output(command, shell=True) results = results.decode() - command = "rm -rf ~/.ipfs-cluster-follow/ipfs_cluster/api-socket" + + command = "sudo rm " + results + results = subprocess.check_output(command, shell=True) + + return True + except Exception as e: + results = str(e) + return False + finally: + pass + + def uninstall_ipget(self): + try: + command = "ps -ef | grep ipget | grep -v grep | awk '{print $2}' | xargs kill -9" + results = subprocess.run(command, shell=True) + + command = "which ipget" results = subprocess.check_output(command, shell=True) results = results.decode() + + command = "sudo rm " + results + results = subprocess.check_output(command, shell=True) return True except Exception as e: @@ -754,6 +954,7 @@ def uninstall_ipfs(self): def test_uninstall(self): if self.role == "leecher" or self.role == "worker" or self.role == "master": ipfs = self.uninstall_ipfs() + ipget = self.uninstall_ipget() pass if self.role == "master": cluster_service = self.uninstall_ipfs_cluster_service() @@ -846,6 +1047,7 @@ def install_config(self, **kwargs): ipget = self.install_ipget() ipfs = self.install_ipfs_daemon() ipfs_config = self.config_ipfs(cluster_name = self.cluster_name, ipfs_path = self.ipfs_path) + # NOTE: This fails some times but never when debugging so probably some sort of race issue results["ipfs"] = ipfs results["ipfs_config"] = ipfs_config["config"] self.run_ipfs_daemon() @@ -880,10 +1082,12 @@ def install_config(self, **kwargs): "cluster_location":"/ip4/167.99.96.231/tcp/9096/p2p/12D3KooWKw9XCkdfnf8CkAseryCgS3VVoGQ6HUAkY91Qc6Fvn4yv", #"cluster_location": "/ip4/167.99.96.231/udp/4001/quic-v1/p2p/12D3KooWS9pEXDb2FEsDv9TH4HicZgwhZtthHtSdSfyKKDnkDu8D", "config":None, - "ipfs_path":"/home/kensix/.cache/ipfs/", + "ipfs_path":"/home/kensix/.cache/ipfs", } install = install_ipfs(None, meta=meta) - # uninstall = install.uninstall_ipfs() + # results = install.test_uninstall() + results = install.install_config() + print(results) pass diff --git a/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_follow.py b/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_follow.py index 07b715d..5a7e4a2 100644 --- a/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_follow.py +++ b/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_follow.py @@ -31,9 +31,12 @@ def ipfs_follow_start(self, **kwargs): if "cluster_name" in kwargs: cluster_name = kwargs['cluster_name'] try: - command1 = "systemctl start ipfs-cluster-follow" - results1 = subprocess.check_output(command1, shell=True) - results1 = results1.decode() + if os.getuid() == 0: + command1 = "systemctl start ipfs-cluster-follow" + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + else: + results1 = "You need to be root to run this command" except Exception as e: results = str(e) finally: @@ -71,9 +74,12 @@ def ipfs_follow_stop(self, **kwargs): if "cluster_name" in kwargs: cluster_name = kwargs['cluster_name'] try: - command1 = "systemctl stop ipfs-cluster-follow" - results1 = subprocess.check_output(command1, shell=True) - results1 = results1.decode() + if os.getuid() == 0: + command1 = "systemctl stop ipfs-cluster-follow" + results1 = subprocess.check_output(command1, shell=True) + results1 = results1.decode() + else: + results1 = "You need to be root to run this command" except Exception as e: results1 = str(e) finally: diff --git a/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_service.py b/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_service.py index de80dc2..d39a55c 100644 --- a/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_service.py +++ b/ipfs_transformers/ipfs_kit_lib/ipfs_cluster_service.py @@ -30,21 +30,38 @@ def test_ipfs_cluster_service(self): pass def ipfs_cluster_service_start(self): - command = "systemctl start ipfs-cluster-service" - results = subprocess.check_output(command, shell=True) - results = results.decode() + if os.getuid() == 0: + command = "systemctl start ipfs-cluster-service" + results = subprocess.check_output(command, shell=True) + results = results.decode() + else: + # TODO: Update these commands!!!! + command = "ipfs-cluster-service daemon --bootstrap /ip4/167.99.96.231/tcp/9096/p2p/12D3KooWDYKMnVLKnP2SmM8umJEEKdhug93QYybmNUEiSe1Kwjmu" + results = subprocess.check_output(command, shell=True) + results = results.decode() + return results def ipfs_cluster_service_stop(self): - command = "systemctl stop ipfs-cluster-service" - results = subprocess.check_output(command, shell=True) - results = results.decode() + if os.getuid() == 0: + command = "systemctl stop ipfs-cluster-service" + results = subprocess.check_output(command, shell=True) + results = results.decode() + else: + command = "ps -ef | grep ipfs-cluster-service | grep -v grep | awk '{print $2}' | xargs kill -9" + results = subprocess.check_output(command, shell=True) + results = results.decode() return results def ipfs_cluster_service_status(self): - command = "ipfs-cluster-service status" - results = subprocess.check_output(command, shell=True) - results = results.decode() + if os.getuid() == 0: + command = "ipfs-cluster-service status" + results = subprocess.check_output(command, shell=True) + results = results.decode() + else: + command = "ps -ef | grep ipfs-cluster-service | grep daemon | grep -v grep | wc -l" + results = subprocess.check_output(command, shell=True) + results = results.decode() return results if __name__ == "__main__": diff --git a/ipfs_transformers/ipfs_kit_lib/ipget.py b/ipfs_transformers/ipfs_kit_lib/ipget.py index d60bf12..8c14f31 100644 --- a/ipfs_transformers/ipfs_kit_lib/ipget.py +++ b/ipfs_transformers/ipfs_kit_lib/ipget.py @@ -31,6 +31,7 @@ def __init__(self, resources, meta=None): pass def ipget_download_object(self, **kwargs): + # NOTE: Make sure this function can download both files and folders if "cid" not in kwargs: raise Exception("cid not found in kwargs") if "path" not in kwargs: @@ -41,7 +42,7 @@ def ipget_download_object(self, **kwargs): if not os.path.exists(os.path.dirname(kwargs['path'])): os.makedirs(os.path.dirname(kwargs['path'])) - command = "export IPFS_PATH=" + self.ipfs_path + "ipfs/ && ipfs get " + kwargs['cid'] + " -o " + kwargs['path'] + command = "export IPFS_PATH=" + self.ipfs_path + " && ipfs get " + kwargs['cid'] + " -o " + kwargs['path'] process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) start_time = time.time() @@ -49,6 +50,9 @@ def ipget_download_object(self, **kwargs): while True: if process.poll() is not None: + stdout, stderr = process.communicate() + stdout.decode() + stderr.decode() break if time.time() - start_time > timeout: @@ -70,16 +74,24 @@ def ipget_download_object(self, **kwargs): } return metadata +# NOTE: Create test that feeds ipget_download_object with a CID and the path to local_path + def test_ipget(self): detect = os.system("which ipget") - if len(detect) > 0: + if int(detect) > 0 or True: + ipget_download_object = self.ipget_download_object(cid="QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1", path="/tmp/test") return True else: return False pass if __name__ == "__main__": - this_ipget = ipget() + this_ipget = ipget(None, meta={"role":"leecher","ipfs_path":"/tmp/test/"}) results = this_ipget.test_ipget() print(results) pass + +# TODO: +# TEST THIS COMMAND FOR OTHER PATHS +# export IPFS_PATH=/mnt/ipfs/ipfs && ipfs get QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1 -o /tmp/test + diff --git a/ipfs_transformers/ipfs_transformers.py b/ipfs_transformers/ipfs_transformers.py index adb457f..735ce75 100644 --- a/ipfs_transformers/ipfs_transformers.py +++ b/ipfs_transformers/ipfs_transformers.py @@ -1,4 +1,5 @@ import os +# TODO: Make template match updates from ipfs_transformers.py class AutoDownloadModel(): def __init__(self, collection=None, meta=None): if os.getuid() == 0: @@ -63,7 +64,7 @@ def __init__(self, collection=None, meta=None): self.model_manager = model_manager(collection, meta) self.model_manager.load_collection_cache() self.model_manager.state() - + def download(self, **kwargs): # NOTE: Add kwarg for output directory where downloads are stored # if "local_path" in kwargs: @@ -105,7 +106,6 @@ def download(self, **kwargs): pass - class ASTConfig(): @staticmethod def from_auto_download(model_name, **kwargs): diff --git a/ipfs_transformers/ipfs_transformers_generator.py b/ipfs_transformers/ipfs_transformers_generator.py index f7010a1..a1c4028 100644 --- a/ipfs_transformers/ipfs_transformers_generator.py +++ b/ipfs_transformers/ipfs_transformers_generator.py @@ -2,9 +2,17 @@ import inspect import transformers -input_file = "ipfs_huggingface.py" -output_file = "ipfs_huggingface_new.py" +init_header = """ +from .ipfs_kit import ipfs_kit +from .s3_kit import s3_kit +from .test_fio import test_fio +""" + +init_output = init_header +input_file = "ipfs_transformers_template.py" +output_file = "ipfs_transformers.py" +init_file = "__init__.py" classes = [] @@ -22,7 +30,6 @@ ipfs_huggingface = f.read() - # Finds index of class Huggingface_Template() everything before this index is header header = ipfs_huggingface[0 : ipfs_huggingface.find("class Huggingface_Template():")] @@ -35,6 +42,7 @@ from_ipfs_template = from_ipfs_template.replace("# START FROM_IPFS", "").replace("# END FROM_IPFS", "") + with open(f"{os.path.dirname(__file__)}/{output_file}", "w") as f: f.write(header) @@ -43,6 +51,9 @@ class_specific_auto_download = auto_download_template.replace("Huggingface_Template", transformer_class) class_specific_from_ipfs = from_ipfs_template.replace("Huggingface_Template", transformer_class) + init_specific_output = f"from .ipfs_transformers import {transformer_class}\n" + init_output += init_specific_output + # This looks a little messy but it's just to make the output file look nice output = f""" class {transformer_class}(): {class_specific_auto_download} @@ -53,5 +64,8 @@ class {transformer_class}(): {class_specific_auto_download} with open(f"{os.path.dirname(__file__)}/{output_file}", "a") as f: f.write(output) + write_init_file = f"{os.path.dirname(__file__)}/{init_file}" + with open(f"{os.path.dirname(__file__)}/{init_file}", "w") as f: + f.write(init_output) print("Done!") \ No newline at end of file diff --git a/ipfs_transformers/ipfs_transformers_template.py b/ipfs_transformers/ipfs_transformers_template.py index 8288fa1..ab35b5b 100644 --- a/ipfs_transformers/ipfs_transformers_template.py +++ b/ipfs_transformers/ipfs_transformers_template.py @@ -1,98 +1,137 @@ import os +# TODO: Make template match updates from ipfs_transformers.py class AutoDownloadModel(): - def __init__(self, collection=None, meta=None): - if meta is not None and type (meta) == dict: - if "local_path" in meta: - self.local_path = meta["local_path"] - else: - self.local_path = "/huggingface_models/" - if "ipfs_path" in meta: - self.ipfs_path = meta["ipfs_path"] - else: - self.ipfs_path = "/ipfs/" - if "s3_cfg" in meta: - self.s3cfg = meta["s3_cfg"] - else: - self.s3cfg = None - if "role" in meta: - self.role = meta["role"] - else: - self.role = "leecher" - else: - self.local_path = "/huggingface_models/" - self.ipfs_path = "/ipfs/" - self.s3cfg = None - self.role = "leecher" - meta = { - "local_path": self.local_path, - "ipfs_path": self.ipfs_path, - "s3_cfg": self.s3cfg, - "role": self.role - } - from model_manager import model_manager as model_manager - self.model_manager = model_manager(collection, meta) - self.model_manager.load_collection_cache() - self.model_manager.state() - - def download(self, **kwargs): - model_name = None - cid = None - if "model_name" in kwargs: - if "/" in kwargs["model_name"]: - model_name = kwargs["model_name"].split("/")[1] - pass - elif "https://" in kwargs["model_name"]: - model_name = kwargs["model_name"].split("/")[-1] - pass - pass - elif "cid" in kwargs: - cid = kwargs["cid"] - if model_name != None: - try: - results = self.model_manager.download_model(model_name, **kwargs) - except Exception as e: - raise e - finally: - pass - return os.path.join(self.local_path, model_name) - else: - try: - results = self.model_manager.ipfs_kit.ipget_download_object(cid, **kwargs) - except Exception as e: - raise e - finally: - pass - return os.path.join(self.local_path, cid) - pass + def __init__(self, collection=None, meta=None): + if os.getuid() == 0: + if meta is not None and type (meta) == dict: + if "local_path" in meta: + self.local_path = meta["local_path"] + else: + self.local_path = "/huggingface/" + if "ipfs_path" in meta: + self.ipfs_path = meta["ipfs_path"] + else: + self.ipfs_path = "/ipfs/" + if "s3_cfg" in meta: + self.s3cfg = meta["s3_cfg"] + else: + self.s3cfg = None + if "role" in meta: + self.role = meta["role"] + else: + self.role = "leecher" + else: + self.local_path = "/huggingface/" + self.ipfs_path = "/ipfs/" + self.s3cfg = None + self.role = "leecher" + meta = { + "local_path": self.local_path, + "ipfs_path": self.ipfs_path, + "s3_cfg": self.s3cfg, + "role": self.role + } + else: + if meta is not None and type (meta) == dict: + if "local_path" in meta: + self.local_path = meta["local_path"] + else: + self.local_path = os.path.join(os.getenv("HOME") , ".cache/huggingface/") + if "ipfs_path" in meta: + self.ipfs_path = meta["ipfs_path"] + else: + self.ipfs_path = os.path.join(os.getenv("HOME") , ".cache/ipfs/") + if "s3_cfg" in meta: + self.s3cfg = meta["s3_cfg"] + else: + self.s3cfg = None + if "role" in meta: + self.role = meta["role"] + else: + self.role = "leecher" + else: + self.local_path = os.path.join(os.getenv("HOME") , ".cache/huggingface/") + self.ipfs_path = os.path.join(os.getenv("HOME") , ".cache/ipfs/") + self.s3cfg = None + self.role = "leecher" + meta = { + "local_path": self.local_path, + "ipfs_path": self.ipfs_path, + "s3_cfg": self.s3cfg, + "role": self.role + } + from model_manager import model_manager as model_manager + self.model_manager = model_manager(collection, meta) + self.model_manager.load_collection_cache() + self.model_manager.state() + + def download(self, **kwargs): + # NOTE: Add kwarg for output directory where downloads are stored + # if "local_path" in kwargs: + # self.local_path = kwargs["local_path"] + # if "ipfs_path" in kwargs: + # self.ipfs_path = kwargs["ipfs_path"] + + model_name = None + cid = None + if "model_name" in kwargs: + if "/" in kwargs["model_name"]: + model_name = kwargs["model_name"].split("/")[1] + pass + elif "https://" in kwargs["model_name"]: + model_name = kwargs["model_name"].split("/")[-1] + pass + else: + model_name = kwargs["model_name"] + pass + elif "cid" in kwargs: + cid = kwargs["cid"] + if model_name != None: + try: + results = self.model_manager.download_model(model_name, **kwargs) + except Exception as e: + raise e + finally: + pass + return os.path.join(self.local_path, model_name) + else: + try: + results = self.model_manager.download_ipfs(cid, os.path.join(self.local_path, cid), **kwargs) + except Exception as e: + raise e + finally: + pass + return os.path.join(self.local_path, cid) + pass class Huggingface_Template(): # START AUTO_DOWNLOAD - @staticmethod - def from_auto_download(model_name, **kwargs): - from transformers import Huggingface_Template - this_download = AutoDownloadModel() - download_folder = this_download.download(model_name=model_name, **kwargs) - return Huggingface_Template.from_pretrained( + @staticmethod + def from_auto_download(model_name, **kwargs): + from transformers import Huggingface_Template + this_download = AutoDownloadModel() + download_folder = this_download.download(model_name=model_name, **kwargs) + return Huggingface_Template.from_pretrained( download_folder, local_files_only=True, - **kwargs + **kwargs ) # END AUTO_DOWNLOAD # START FROM_IPFS - @staticmethod - def from_ipfs(cid, **kwargs): - from transformers import Huggingface_Template - this_download = AutoDownloadModel() - download_folder = this_download.download(cid=cid, **kwargs) - return Huggingface_Template.from_pretrained( + @staticmethod + def from_ipfs(cid, **kwargs): + from transformers import Huggingface_Template + this_download = AutoDownloadModel() + download_folder = this_download.download(cid=cid, **kwargs) + return Huggingface_Template.from_pretrained( download_folder, local_files_only=True, - **kwargs + **kwargs ) # END FROM_IPFS if __name__ == "__main__": - AutoModel.from_auto_download("google-bert/law-LLM-GGUF-Q4_0") - print("done") \ No newline at end of file + AutoModel.from_auto_download("google-bert/law-LLM-GGUF-Q4_0") + print("done") \ No newline at end of file diff --git a/ipfs_transformers/model_manager.py b/ipfs_transformers/model_manager.py index 95a8977..2fb7bff 100755 --- a/ipfs_transformers/model_manager.py +++ b/ipfs_transformers/model_manager.py @@ -38,6 +38,7 @@ def __init__(self, resources=None, meta=None): self.this_model_path = None self.this_model = None self.this_model_name = None + self.s3cfg = None if meta is not None and type (meta) == dict: if "s3cfg" in meta: self.s3cfg = meta["s3cfg"] @@ -96,8 +97,9 @@ def __init__(self, resources=None, meta=None): if not os.path.exists(self.local_path): os.makedirs(self.local_path) ipfs_path_files = os.listdir(ipfs_path) - - # NOTE: Changed or to and in this if so install only runs if there is no ipfs in any of the possible locations + # NOTE there is no systemctl daemon reload. + # NOTE: Changed or to and in this if so install only runs if there is no ipfs in any of the possible locations + # NOTE: make sure all instances of IPFS daemon are started either as a service or with os.system() or with process.popen() if ".ipfs" not in homedir_files and "ipfs" not in ipfs_path_files and os.path.exists(ipfs_path): self.install_ipfs.install_ipfs_daemon() self.install_ipfs.install_ipget() @@ -296,7 +298,7 @@ def download_s3(self, s3_src, filename_dst, **kwargs): # NOTE: Changed to use filename_dst instead of basename so it's the same as the ipfs download function -fregg suffix = "." + filename_dst.split(".")[-1] with tempfile.NamedTemporaryFile(suffix=suffix, dir="/tmp", delete=False) as this_temp_file: - this_file_key = s3_src.split(s3cfg["bucket"]+"/")[1] + this_file_key = s3_src.split(self.s3cfg["bucket"]+"/")[1] results = self.s3_kit.s3_dl_file(s3_src, this_temp_file.name, self.s3cfg["bucket"]) if results is not None and len(results) > 0: shutil.move(results["local_path"], filename_dst) @@ -329,26 +331,50 @@ def download_ipfs(self, ipfs_src, filename_dst, **kwargs): # if not os.path.exists(basename): # os.mkdir(basename) - suffix = "." + filename_dst.split(".")[-1] - with tempfile.NamedTemporaryFile(suffix=suffix, dir="/tmp", delete=False) as this_temp_file: - results = self.ipfs_kit.ipfs_get(cid = ipfs_src, path = this_temp_file.name) - if "path" in list(results.keys()): - results_file_name = results["path"] - shutil.move(results_file_name, filename_dst) + # Checks if the suffix is a valid file extension and not the cache folder Probably needs some work to handle other ipfs_path locations + if(".cache" not in filename_dst and "." in filename_dst ): + suffix = "." + filename_dst.split(".")[-1] + with tempfile.NamedTemporaryFile(suffix=suffix, dir="/tmp", delete=False) as this_temp_file: + results = self.ipfs_kit.ipfs_get(cid = ipfs_src, path = this_temp_file.name) + if "path" in list(results.keys()): + results_file_name = results["path"] + shutil.move(results_file_name, filename_dst) + + # NOTE: Add removal logic here -fregg + if(os.path.exists(this_temp_file.name)): + command = "rm "+this_temp_file.name + os.system(command) + + return filename_dst + else: + raise Exception("No path in results or timeout") + else: + # Download folder + with tempfile.TemporaryDirectory(dir="/tmp") as tempdir: + results = self.ipfs_kit.ipfs_get(cid = ipfs_src, path = tempdir) - # NOTE: Add removal logic here -fregg - if(os.path.exists(this_temp_file.name)): - command = "rm "+this_temp_file.name - os.system(command) + if os.path.exists(filename_dst): + pass + else: + os.mkdir(filename_dst) - return filename_dst - else: - raise Exception("No path in results or timeout") + if filename_dst[-1] == "/": + pass + else: + filename_dst = filename_dst + "/" + + for file in os.scandir(tempdir): + if file.is_file(): + shutil.move(file.path, filename_dst + file.name) + + return filename_dst + except Exception as e: print("Exception thrown remove files") - if(os.path.exists(this_temp_file.name)): - command = "rm "+this_temp_file.name - os.system(command) + if(this_temp_file != None): + if(os.path.exists(this_temp_file.name)): + command = "rm "+this_temp_file.name + os.system(command) return e else: @@ -1710,54 +1736,4 @@ def test(self, **kwargs): self.evict_expired_models() self.evict_zombies() return self - -# if __name__ == "__main__": -# endpoint = "" -# access_key = "" -# secret_key = "" -# host_bucket = "" -# bucket = "" -# ipfs_src = "QmXBUkLywjKGTWNDMgxknk6FJEYu9fZaEepv3djmnEqEqD" -# s3cfg = { -# "endpoint": endpoint, -# "accessKey": access_key, -# "secretKey": secret_key, -# "hostBucket": host_bucket, -# "bucket": bucket -# } -# cluster_name = "" -# ipfs_path = "" -# local_path = "" -# ipfs_path = "" -# ten_mins = 600 -# ten_hours = 60000 -# ten_days = 864000 -# never = 100000000 -# role = "worker" -# cache = { -# "local": "/storage/cloudkit-models/collection.json", -# "s3": "s3://cloudkit-beta/collection.json", -# "ipfs": "QmXBUkLywjKGTWNDMgxknk6FJEYu9fZaEepv3djmnEqEqD", -# "https": "https://huggingface.co/endomorphosis/cloudkit-collection/resolve/main/collection.json" -# } -# timing = { -# "local_time": ten_mins, -# "s3_time": ten_hours, -# "ipfsTime": ten_days, -# "httpsTime": never, -# } -# meta = { -# "s3cfg": s3cfg, -# "ipfs_src": ipfs_src, -# "timing": timing, -# "cache": cache, -# "role": role, -# "cluster_name": cluster_name, -# "ipfs_path": ipfs_path, -# "local_path": local_path, -# "ipfs_path": ipfs_path -# } - -# models_manager = model_manager(None, meta= meta) -# results = models_manager.test() -# print(results) + \ No newline at end of file diff --git a/ipfs_transformers/orbit_kit.py b/ipfs_transformers/orbit_kit.py new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/ipfs_transformers/orbit_kit.py @@ -0,0 +1 @@ + diff --git a/ipfs_transformers/orbit_kit_lib/orbitv3-slave.js b/ipfs_transformers/orbit_kit_lib/orbitv3-slave.js new file mode 100644 index 0000000..a4cbaa9 --- /dev/null +++ b/ipfs_transformers/orbit_kit_lib/orbitv3-slave.js @@ -0,0 +1,227 @@ +import {createOrbitDB, Identities, OrbitDBAccessController} from '@orbitdb/core' +import {createHelia} from 'helia' +import {EventEmitter} from "events"; +import {createLibp2p} from 'libp2p' +import {identify} from '@libp2p/identify' +import {noise} from '@chainsafe/libp2p-noise' +import {yamux} from '@chainsafe/libp2p-yamux' +import {gossipsub} from '@chainsafe/libp2p-gossipsub' +import {bitswap} from '@helia/block-brokers' +import {tcp} from '@libp2p/tcp' +import {mdns} from '@libp2p/mdns' +import {LevelBlockstore} from 'blockstore-level' +import {createRequire} from "module"; +import { WebSocketServer } from 'ws' + +const require = createRequire(import.meta.url); + +const ipfsLibp2pOptions = { + transports: [ + tcp(), + ], + streamMuxers: [ + yamux() + ], + connectionEncryption: [ + noise() + ], + peerDiscovery: [ + mdns({ + interval: 20e3 + }) + ], + services: { + pubsub: gossipsub({ + allowPublishToZeroPeers: true + }), + identify: identify() + }, + connectionManager: { + } +} + +EventEmitter.defaultMaxListeners = 20; + +let ipfs +let orbitdb +let db + +async function run () { + const argv = require('minimist')(process.argv.slice(2)) + let ipAddress + let dbAddress + if (!argv.ipAddress) { + ipAddress = "127.0.0.1" + } else { + ipAddress = argv.ipAddress + } + if (!argv.dbAddress) { + dbAddress = "/orbitdb/zdpuB31L6gJz49erikZSQT3A1erJbid8oUTBrjLtBwjjXe3R5" + } + else { + dbAddress = argv.dbAddress + } + process.on('SIGTERM', handleTerminationSignal); + process.on('SIGINT', handleTerminationSignal); + console.info('Script is running. Press CTRL+C to terminate.'); + + const libp2p = await createLibp2p({ addresses: { + listen: [`/ip4/${ipAddress}/tcp/0`] + }, ...ipfsLibp2pOptions}) + const blockstore = new LevelBlockstore(`./ipfs/2/blocks`) + ipfs = await createHelia({blockstore: blockstore, libp2p: libp2p, blockBrokers: [bitswap()]}) + const identities = await Identities({ ipfs, path: `./orbitdb/2/identities` }) + const id = "2" + const identity = identities.createIdentity({ id }) + orbitdb = await createOrbitDB({ipfs: ipfs, identities, id: `2`, directory: `./orbitdb/2`}) + + db = await orbitdb.open(dbAddress, + {type: 'documents', + AccessController: OrbitDBAccessController({ write: ["*"], sync: false}), + }) + let oldHeads = await db.log.heads() + console.debug(`${new Date().toISOString()} initial heads ${JSON.stringify(Array.from(oldHeads, h => h.payload))}`) + await new Promise(r => setTimeout(r, 5000)); + await db.close() + console.debug(`${new Date().toISOString()} opening db for sync`) + db = await orbitdb.open(dbAddress, + {type: 'documents', + AccessController: OrbitDBAccessController({ write: ["*"]}), + }) + db.events.on('join', async (peerId, heads) => { + for await (let entry of heads) { + console.info(`peer ${peerId} joined with head ${JSON.stringify(entry.payload)}`) + } + if (oldHeads) { + for (let hash of Array.from(oldHeads, h => h.hash)) { + let it = db.log.iterator({gt: hash}) + for await (let entry of it) { + console.debug(`new startup entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + } + }) + console.info(`${new Date().toISOString()}running with db address ${db.address}`) + const wss = new WebSocketServer({ port: 8888 }) + wss.on('connection', (ws) => { + console.log('New WebSocket connection'); + ws.on('message', (message) => { + message = JSON.parse(message.toString()); + console.log('Received message:', message); + let method = Object.keys(message)[0]; + let data = message[method]; + // Handle WebSocket messages here + switch (method) { + case 'insert': + // Handle insert logic + let insertKey = data._id; + let insertValue = data.content; + console.log('Inserting data: ', insertKey, insertValue); + validate(insertValue).then((result) => { + if (result) { + db.put(data).then(() => { + console.log('Data inserted:', data); + ws.send('Data inserted'); + }).catch((error) => { + console.error('Error inserting data:', error); + ws.send('Error inserting data'); + }); + } + else{ + console.error('Data validation failed:', insertValue); + ws.send('Data validation failed'); + } + }); + break; + case 'update': + // Handle update logic + let updateKey = data._id; + let updateValue = data.content; + let updatedDoc = {_id: updateKey, content: updateValue}; + let docToUpdate = db.get(updateKey).then((doc) => { + validate(updatedDoc).then((result) => { + db.put(updatedDoc).then(() => { + console.log('Data updated:', data); + ws.send('Data updates'); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }) + }).catch((error) => { + console.error('Error upfating document:', error); + ws.send('Error updating document'); + }); + break; + case 'select': + // Handle select logic + let selectID = data._id; + let docToSelect = db.get(selectID).then((doc) => { + console.log('Selected document:', doc); + ws.send(JSON.stringify(doc)); + }).catch((error) => { + console.error('Error selecting document:', error); + ws.send('Error selecting document'); + }) + break; + case 'delete': + // Handle delete by ID logic + let deleteId = data._id; + let docToDelete = db.get(deleteId).then((doc) => { + db.del(deleteId).then((deletedDoc) => { + console.log('Document deleted:', deletedDoc); + ws.send('Document deleted'); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + break; + default: + console.log('Unknown message:', message); + break; + } + }); + }); + console.info(`${new Date().toISOString()} getting updates ...`) + db.events.on('update', async (entry) => { + console.debug(`new head entry op ${entry.payload.op} with value ${JSON.stringify(entry.payload.value)}`) + if (oldHeads) { + for (let hash of Array.from(oldHeads, h => h.hash)) { + let it = db.log.iterator({gt: hash, lte: entry.hash}) + for await (let entry of it) { + console.debug(`new updated entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + } else { + let it = db.log.iterator({lte: entry.hash}) + for await (let entry of it) { + console.debug(`new updated entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + }) + console.info(`${new Date().toISOString()} searching result: `) + let result = await db.query(data => { + return data.content === "content 5000" + }) + console.info(`${new Date().toISOString()} result: `, JSON.stringify(result)) +} + +async function handleTerminationSignal() { + console.info('received termination signal, cleaning up and exiting...'); + await db.close() + await orbitdb.stop() + await ipfs.stop() + process.exit(); +} + +await run() \ No newline at end of file diff --git a/ipfs_transformers/orbit_kit_lib/package.json b/ipfs_transformers/orbit_kit_lib/package.json new file mode 100644 index 0000000..9ebe341 --- /dev/null +++ b/ipfs_transformers/orbit_kit_lib/package.json @@ -0,0 +1,36 @@ +{ + "name": "agwp2pdb", + "version": "1.0.0", + "description": "AGW P2P distributed database", + "main": "orbit.js", + "type": "module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "AGW", + "P2P", + "orbit" + ], + "author": "Karsten Ohme", + "license": "UNLICENSED", + "dependencies": { + "@chainsafe/libp2p-gossipsub": "^11.1.0", + "@chainsafe/libp2p-noise": "^15.0.0", + "@helia/block-brokers": "^1.0.0", + "@libp2p/bootstrap": "^10.0.12", + "@libp2p/circuit-relay-v2": "^1.0.12", + "@libp2p/mdns": "^10.0.12", + "@libp2p/tcp": "^9.0.12", + "@libp2p/webrtc": "^4.0.16", + "@libp2p/websockets": "^8.0.12", + "@orbitdb/core": "^2.0.1", + "blockstore-level": "^1.1.7", + "bson": "^6.2.0", + "helia": "^3.0.1", + "libp2p": "^1.2.0", + "minimist": "^1.2.8", + "private-ip": "^3.0.2", + "uuid": "^9.0.1" + } +} diff --git a/ipfs_transformers/orbit_kit_lib/websocket_test_slave.js b/ipfs_transformers/orbit_kit_lib/websocket_test_slave.js new file mode 100644 index 0000000..c3bcbe7 --- /dev/null +++ b/ipfs_transformers/orbit_kit_lib/websocket_test_slave.js @@ -0,0 +1,19 @@ +import { WebSocket } from 'ws'; + +export default async function main(){ + const ws = new WebSocket('ws://localhost:8888'); + ws.on('open', () => { + ws.send(JSON.stringify({'insert': { _id: '1', content: 'content 1' }})) + + ws.send(JSON.stringify({'select': { _id: '1' }})) + + ws.send(JSON.stringify({"update": { _id: '1', content: 'content 2' }})) + + ws.send(JSON.stringify({'delete': { _id: '1' }})) + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(); \ No newline at end of file diff --git a/ipfs_transformers/orbit_kit_lib/yarn.lock b/ipfs_transformers/orbit_kit_lib/yarn.lock new file mode 100644 index 0000000..b3f46c1 --- /dev/null +++ b/ipfs_transformers/orbit_kit_lib/yarn.lock @@ -0,0 +1,6371 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@achingbrain/nat-port-mapper@^1.0.13": + version "1.0.13" + resolved "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.13.tgz" + integrity sha512-B5GL6ILDek72OjoEyFGEuuNYaEOYxO06Ulhcaf/5iQ4EO8uaZWS+OkolYST7L+ecJrkjfaSNmSAsWRRuh+1Z5A== + dependencies: + "@achingbrain/ssdp" "^4.0.1" + "@libp2p/logger" "^4.0.1" + default-gateway "^7.2.2" + err-code "^3.0.1" + it-first "^3.0.1" + p-defer "^4.0.0" + p-timeout "^6.1.1" + xml2js "^0.6.0" + +"@achingbrain/ssdp@^4.0.1": + version "4.0.6" + resolved "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.0.6.tgz" + integrity sha512-Y4JE2L9150i50V6lg/Y8+ilhxRpUZKKv+PKo68Aj7MjPfaUAar6ZHilF9h4/Zb3q0fqGMXNc9o11cQLNI8J8bA== + dependencies: + event-iterator "^2.0.0" + freeport-promise "^2.0.0" + merge-options "^3.0.4" + xml2js "^0.6.2" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.20.0", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz" + integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz" + integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.20.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz" + integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz" + integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-default-from" "^7.24.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz" + integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz" + integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz" + integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz" + integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz" + integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.1" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz" + integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz" + integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz" + integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz" + integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz" + integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz" + integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.5.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz" + integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-typescript" "^7.24.1" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.1.6": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz" + integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.4" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.13.13": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz" + integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-flow-strip-types" "^7.24.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.13.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/register@^7.13.16": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz" + integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.20.0", "@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@chainsafe/as-chacha20poly1305@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz" + integrity sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew== + +"@chainsafe/as-sha256@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.1.tgz" + integrity sha512-IqeeGwQihK6Y2EYLFofqs2eY2ep1I2MvQXHzOAI+5iQN51OZlUkrLgyAugu2x86xZewDk5xas7lNczkzFzF62w== + +"@chainsafe/is-ip@^2.0.1", "@chainsafe/is-ip@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + +"@chainsafe/libp2p-gossipsub@^11.0.0", "@chainsafe/libp2p-gossipsub@^11.1.0": + version "11.2.1" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-11.2.1.tgz" + integrity sha512-2NvlOY4Jfwn7U/sKF0kILl3+luHxq9hhEiBqZRqLTIV8LYmMQl9VpTMgMvRwKzgn/NDeZzsPb8olk2o00tkmZw== + dependencies: + "@libp2p/crypto" "^4.0.1" + "@libp2p/interface" "^1.1.2" + "@libp2p/interface-internal" "^1.0.7" + "@libp2p/peer-id" "^4.0.5" + "@libp2p/pubsub" "^9.0.8" + "@multiformats/multiaddr" "^12.1.14" + denque "^2.1.0" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + protobufjs "^7.2.6" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@chainsafe/libp2p-noise@^14.0.0": + version "14.1.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-14.1.0.tgz" + integrity sha512-uHmptoxgMsfDIP7cQMQ4Zp9+y27oON5+gloBLXi+7EJpMhyvo7tjafUxRILwLofzeAtfaF3ZHraoXRFUSbhK2Q== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^3.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-byte-stream "^1.0.0" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-noise@^15.0.0": + version "15.0.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.0.0.tgz" + integrity sha512-O8Y/WVU4J/qrnG72jwVhbmdXiBzv1dT9B3PMClCRmZ9z/5vVPEGRVXE/SVYeGF3bNuBTLoh+F+GaKG/9UHlMhg== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-yamux@^6.0.1": + version "6.0.2" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz" + integrity sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + get-iterator "^2.0.1" + it-foreach "^2.0.6" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + uint8arraylist "^2.4.8" + +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@helia/block-brokers@^1.0.0", "@helia/block-brokers@~1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@helia/block-brokers/-/block-brokers-1.0.0.tgz" + integrity sha512-VP9KDj6fNT1FKk/vWjDzk8eYyVclxHFQaOLI0+rvifg+w8X+atCa/v2JKzZzbW6BX3/dxcn/mZz+ZHgdmuQ1qg== + dependencies: + "@helia/interface" "^3.0.1" + "@libp2p/interface" "^1.1.1" + any-signal "^4.1.1" + interface-blockstore "^5.2.7" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + it-filter "^3.0.4" + it-foreach "^2.0.6" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +"@helia/delegated-routing-v1-http-api-client@^1.1.0": + version "1.1.2" + resolved "https://registry.npmjs.org/@helia/delegated-routing-v1-http-api-client/-/delegated-routing-v1-http-api-client-1.1.2.tgz" + integrity sha512-u+sVdOxFieusZh/AxC8c0lU1micWfAosju7A80n62rdJ1fr1lclkhhrlfaKWIgVOq+pwonEzoOE7QgnTL22tYw== + dependencies: + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.3" + "@multiformats/multiaddr" "^12.1.3" + any-signal "^4.1.1" + browser-readablestream-to-it "^2.0.3" + ipns "^7.0.1" + it-first "^3.0.3" + it-map "^3.0.4" + it-ndjson "^1.0.4" + multiformats "^12.1.1" + p-defer "^4.0.0" + p-queue "^7.3.4" + uint8arrays "^4.0.6" + +"@helia/interface@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@helia/interface/-/interface-3.0.1.tgz" + integrity sha512-ibaiN0InfFVf8TNOKK+wzoLqlrWx/Crk/yY5o+DNRvgI4fdaJofHEaSyDvFR/amTVhdFHnOK+3Mbh+jGktWapQ== + dependencies: + "@libp2p/interface" "^1.1.1" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + multiformats "^13.0.0" + progress-events "^1.0.0" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.6": + version "9.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz" + integrity sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-json@^10.0.1": + version "10.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.2.0.tgz" + integrity sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-pb@^4.0.3": + version "4.1.0" + resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.0.tgz" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@libp2p/autonat@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/autonat/-/autonat-1.0.12.tgz" + integrity sha512-x4wb2weNY6zLkjEONHytfLFxNNZ7yTCZB/cFk2Dd5Kmg9W0PkefWjcrdDZdHJt4s2JwVFFkmTtxsvJBRlrtTQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/bootstrap@^10.0.12", "@libp2p/bootstrap@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.0.15.tgz" + integrity sha512-5GLppn6AW1CVHnTHnAkdtuOeVmB2HOGi65SxKLW0GBtS8zsuiuedtolbIN1mkPFsshYUhWMcVOcxNQn4tWJKMw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + +"@libp2p/circuit-relay-v2@^1.0.12", "@libp2p/circuit-relay-v2@^1.0.2": + version "1.0.15" + resolved "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.0.15.tgz" + integrity sha512-sOWIfiR4GWDDECCalyTZBc0qkSy1cQnM1B78eXNRVEq10EGEZ4/5qd0/Y3gWwrjGHWdMdq/4A+gHczzxa0kLVA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + it-protobuf-stream "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-retry "^6.2.0" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/crypto@^2.0.3": + version "2.0.8" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz" + integrity sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA== + dependencies: + "@libp2p/interface" "^0.1.6" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^12.0.1" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.6" + +"@libp2p/crypto@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^3.0.2": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^4.0.0", "@libp2p/crypto@^4.0.1", "@libp2p/crypto@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.2.tgz" + integrity sha512-zdFnnP2dA3X/xqRyJus+5rgCrp7JHFh+C8hA+DckXqp+ayiRMyLnKKPXmSzTKJSsIABMW2pcUFU+yCeDSgiSQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@noble/curves" "^1.3.0" + "@noble/hashes" "^1.3.3" + asn1js "^3.0.5" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/dcutr@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.0.12.tgz" + integrity sha512-2fpk2UUpcsVF/oiBymLMvbyBnR3Zma1cdv/HBMLNO2R0SpMYIHV9RmLJM4PVNyTaVGWul0NOQqBteRFfstTMmA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/identify@^1.0.1": + version "1.0.14" + resolved "https://registry.npmjs.org/@libp2p/identify/-/identify-1.0.14.tgz" + integrity sha512-615aa4TPtzxUNb24yzxyFdu5/x+3Ge2BD/Ob4RN1PnT+haFQqgbcT2RJfqbyvuo7gzxVEGamqh5uYaChqAQ4IA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + wherearewe "^2.0.1" + +"@libp2p/interface-internal@^1.0.7", "@libp2p/interface-internal@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.0.8.tgz" + integrity sha512-NkUBnqzAAWDcg9n4uUtEpbtHg0gZjLhdBTwqJWkWuTujaCEz0xk5FfXBXgWqGEMIZAN73VX8/hLQCeigk3gUlg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@multiformats/multiaddr" "^12.1.14" + uint8arraylist "^2.4.8" + +"@libp2p/interface@^0.1.2", "@libp2p/interface@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz" + integrity sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag== + dependencies: + "@multiformats/multiaddr" "^12.1.5" + abortable-iterator "^5.0.1" + it-pushable "^3.2.0" + it-stream-types "^2.0.1" + multiformats "^12.0.1" + p-defer "^4.0.0" + race-signal "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface@^1.0.0", "@libp2p/interface@^1.1.0", "@libp2p/interface@^1.1.1", "@libp2p/interface@^1.1.2", "@libp2p/interface@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-1.1.3.tgz" + integrity sha512-id22Ve5acg6CM0jjL8s9cyEaBYWn7z1R+1gy75RpHi0qgW15ifozwi0oFSTGLVA5XzRnNzioDLj+ZP6QwvhIVQ== + dependencies: + "@multiformats/multiaddr" "^12.1.14" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/kad-dht@^12.0.2": + version "12.0.7" + resolved "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.0.7.tgz" + integrity sha512-VmjTkUwLEsvev5Ld3LkHZCFoGhuPpyWjlkUomNj7eRAemsHM47fbr7O5fi7bObpEzlpwsbipA8cDLsdRe+9QDQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + any-signal "^4.1.1" + hashlru "^2.3.0" + interface-datastore "^8.2.10" + it-drain "^3.0.5" + it-length "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-take "^3.0.4" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-event "^6.0.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/keychain@^4.0.2": + version "4.0.8" + resolved "https://registry.npmjs.org/@libp2p/keychain/-/keychain-4.0.8.tgz" + integrity sha512-u4HD+HxfJTfW7G5+4NNsyIE8Cyex/XOsp4EREfk3Twhm7RgUdngFBMxwGxgR3XmWNzvZRknMzWJBXAXdW2azaw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + interface-datastore "^8.2.10" + merge-options "^3.0.4" + multiformats "^13.0.1" + sanitize-filename "^1.6.3" + uint8arrays "^5.0.1" + +"@libp2p/logger@^3.0.2": + version "3.1.0" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz" + integrity sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ== + dependencies: + "@libp2p/interface" "^0.1.6" + "@multiformats/multiaddr" "^12.1.5" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^12.0.1" + +"@libp2p/logger@^4.0.0", "@libp2p/logger@^4.0.1", "@libp2p/logger@^4.0.3", "@libp2p/logger@^4.0.4", "@libp2p/logger@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.6.tgz" + integrity sha512-ofTE3kDivBJnUSoX68nOeg1EuAnIE8oUjUnQnuKrxH+nh0JtjTcvwwIzjmm4nApwb4xj2dgPSDvU38Mjmu3TvA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@multiformats/multiaddr" "^12.1.14" + debug "^4.3.4" + interface-datastore "^8.2.10" + multiformats "^13.0.1" + +"@libp2p/mdns@^10.0.12", "@libp2p/mdns@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.0.15.tgz" + integrity sha512-06Vf0ok0t7mmtwxOGUvYA4LPkzmOPudIHcRNfBztfKy6Ya211pm3z4isM526yoYeneQaD7pQzA63x/Go3SELqA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/multicast-dns" "^7.2.4" + dns-packet "^5.6.1" + multicast-dns "^7.2.5" + +"@libp2p/mplex@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mplex/-/mplex-10.0.15.tgz" + integrity sha512-OnmWkK5cMW6qyuJ3SCWjM1FNs7ZBAlqASC0FrRNel+bV5AJHrqAjA1kkBrlPVPe5vbehWqdPpkHqT7CzlrxAtA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/multistream-select@^5.1.3": + version "5.1.3" + resolved "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.3.tgz" + integrity sha512-vKD4FESYBHxLIL0gQ+WtUktsT3SrUBj2GFOESbexj98cTXquKcQUM6XTMrLRS8wWf77czZKpuKwwMxE+VsU2kw== + dependencies: + "@libp2p/interface" "^1.1.3" + it-length-prefixed "^9.0.4" + it-length-prefixed-stream "^1.1.6" + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-collections@^5.1.6": + version "5.1.6" + resolved "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.1.6.tgz" + integrity sha512-n2Oav1GehdEToeALvSytuYw2wiwzMvbOUxyAFUfF6oqmZgNe9P8cOkyr0w2P0p0hXjdcIeIfDYeTvY4MeHZnjw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + +"@libp2p/peer-id-factory@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.0.6.tgz" + integrity sha512-dj5gdPvh3p4n4ltvZF508LA2hvC5COKP6BVFzcUBUy1yp81srSkX6QuV69W61pYfe5VxhVvyjhVkHIZ2l7wB7Q== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-id@^3.0.2", "@libp2p/peer-id@^3.0.3": + version "3.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz" + integrity sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw== + dependencies: + "@libp2p/interface" "^0.1.6" + multiformats "^12.0.1" + uint8arrays "^4.0.6" + +"@libp2p/peer-id@^4.0.0", "@libp2p/peer-id@^4.0.3", "@libp2p/peer-id@^4.0.5", "@libp2p/peer-id@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.6.tgz" + integrity sha512-hAj2bdN+s/cCkiaLthuL412DqLeYZ83yRmbjZfHHJ8d3sV/M7NAxu2v8Zx+3KurFF8ICMoD7bb34IXHo7FH3kw== + dependencies: + "@libp2p/interface" "^1.1.3" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +"@libp2p/peer-record@^7.0.9": + version "7.0.9" + resolved "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.9.tgz" + integrity sha512-uI5kE8K6/CWamxV9NK1p7mdYoWIf1AP+eWWZd+1opa/R7zT/QYmtAc/wWE7uFhfRsB736u9GkiPwU66LzA0reQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + protons-runtime "^5.4.0" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-store@^10.0.10": + version "10.0.10" + resolved "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.0.10.tgz" + integrity sha512-b5SUUtioxJMWaBPU2/UfS76q1DXkDmTkpTBogiKc5BTM6g5AqIA4wQXeiLB5EopxEUnSYSyeFxwdoeVDBkz19g== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + interface-datastore "^8.2.10" + it-all "^3.0.4" + mortice "^3.0.4" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/ping@^1.0.1": + version "1.0.11" + resolved "https://registry.npmjs.org/@libp2p/ping/-/ping-1.0.11.tgz" + integrity sha512-aymP1dNDlYYVxhFk71df0M+3OWozZwIq5lev0Z9JJQrXzWLRLw9D2C3oDN9zfeBpVmBE0bnrb2h+fYGb2POXHw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-pipe "^3.0.1" + uint8arrays "^5.0.1" + +"@libp2p/pubsub@^9.0.8": + version "9.0.10" + resolved "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.10.tgz" + integrity sha512-oYvDM14NNXyFLnrVVQISrWZE1DZSOfHd7tQW/M+/Pl2iICsrMuj/ViZ8BFjGE2RkJflHXKGV5bdEqQNQMIoJ/g== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + p-queue "^8.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/tcp@^9.0.12", "@libp2p/tcp@^9.0.2": + version "9.0.15" + resolved "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.0.15.tgz" + integrity sha512-q9huXxkvbiCXyRNVjS12ProBpnHUIKhaq+53UQGtvL/hN8KyD9lIOqziNbh8U3mfbaZZAbhxPOyhLKmbdxrsyQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + stream-to-it "^0.2.4" + +"@libp2p/upnp-nat@^1.0.1": + version "1.0.13" + resolved "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.0.13.tgz" + integrity sha512-p2RjXu3Vc/kKdPDqxPtTea/ecLDy2tsJ+9njccOdw+FBeFrr2N+Aoge1dMzHXogWxGOrnyyjd04aAliiLPkENw== + dependencies: + "@achingbrain/nat-port-mapper" "^1.0.13" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + wherearewe "^2.0.1" + +"@libp2p/utils@^5.0.0", "@libp2p/utils@^5.2.0", "@libp2p/utils@^5.2.5": + version "5.2.5" + resolved "https://registry.npmjs.org/@libp2p/utils/-/utils-5.2.5.tgz" + integrity sha512-oMUrBvEFGD/74I3W3AhpV3pLx8CeEhxCpoJ9a0BTetoJ+TbU5DxxcWJGvhoq3RfQiUvZtg0IwJWNaiJ6lB2sdA== + dependencies: + "@chainsafe/is-ip" "^2.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/logger" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + get-iterator "^2.0.1" + is-loopback-addr "^2.0.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + netmask "^2.0.2" + p-defer "^4.0.0" + race-event "^1.1.0" + race-signal "^1.0.2" + uint8arraylist "^2.4.8" + +"@libp2p/webrtc@^4.0.16", "@libp2p/webrtc@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-4.0.19.tgz" + integrity sha512-SeEvCkF2nExh5kTvzY8DzEAyeKP6F5oespBn8sfFFMJ0GEtrUxFgrFrT06suVFhkPSKIZ91wbiHxhV1JGO7t0Q== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + detect-browser "^5.3.0" + it-length-prefixed "^9.0.4" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + multihashes "^4.0.3" + node-datachannel "^0.5.3" + p-defer "^4.0.0" + p-event "^6.0.0" + p-timeout "^6.1.2" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + react-native-webrtc "^118.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/websockets@^8.0.12", "@libp2p/websockets@^8.0.2": + version "8.0.15" + resolved "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.0.15.tgz" + integrity sha512-TNhMrhdf+/sUam8SxpmUcoNxXlwq2F6YipdwBYo54HioFS1XIrR7VRqrhJot+Xz20JXV+k3IFMmBrg1Y/8vvBg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-to-uri" "^10.0.1" + "@types/ws" "^8.5.10" + it-ws "^6.1.1" + p-defer "^4.0.0" + wherearewe "^2.0.1" + ws "^8.16.0" + +"@libp2p/webtransport@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webtransport/-/webtransport-4.0.19.tgz" + integrity sha512-AOA3p3PfGYYxgSaVFfbagyWb5yRZMQD32XtG2D/NkMunOmBG1ZoZsbzRJeLLL+4FT7BMdwMlMYRwfSGm2txwvA== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@multiformats/mafmt@^12.1.6": + version "12.1.6" + resolved "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz" + integrity sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr-matcher@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.1.2.tgz" + integrity sha512-O7hO+TYsweMjNCqTYKYn8iki2GXA46mxmgqnsOb2Wpr6ca4dRGnPldWTai2WwTeZpQyRJ/7GE+N9zPTfP0xE+Q== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@multiformats/multiaddr" "^12.0.0" + multiformats "^13.0.0" + +"@multiformats/multiaddr-to-uri@^10.0.1": + version "10.0.1" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.0.1.tgz" + integrity sha512-RtOBRJucMCzINPytvt1y7tJ2jr4aSKJmv3DF7/C515RJO9+nu9sZHdsk9vn251OtN8k21rAGlIHESt/BSJWAnQ== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.0", "@multiformats/multiaddr@^12.1.14", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.1.5": + version "12.1.14" + resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.14.tgz" + integrity sha512-1C0Mo73chzu7pTzTquuKs5vUtw70jhqg1i6pUNznGb0WV6RFa6vyB+D697Os5+cLx+DiItrAY6VzMtlGQsMzYg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + dns-over-http-resolver "^3.0.2" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + +"@noble/curves@^1.1.0", "@noble/curves@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3", "@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@orbitdb/core@^2.0.1": + version "2.1.0" + resolved "https://registry.npmjs.org/@orbitdb/core/-/core-2.1.0.tgz" + integrity sha512-IjNPZrvZrFCoALF6owbWpdwn3rO6ekkurSA1Ccp5p2sgatJa3j2yCXN0qJpr6pistqwc9tZSKYsYmGUQ2bkEUw== + dependencies: + "@ipld/dag-cbor" "^9.0.6" + "@libp2p/crypto" "^3.0.2" + it-pipe "^3.0.1" + level "^8.0.0" + lru "^3.1.0" + multiformats "^12.1.3" + p-queue "^8.0.1" + timeout-abort-controller "^3.0.0" + uint8arrays "^5.0.0" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@react-native-community/cli-clean@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz" + integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + +"@react-native-community/cli-config@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.6.tgz" + integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz" + integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz" + integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== + dependencies: + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz" + integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== + dependencies: + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz" + integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.2.4" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-ios@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz" + integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-plugin-metro@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz" + integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== + +"@react-native-community/cli-server-api@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz" + integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== + dependencies: + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz" + integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.6.tgz" + integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.6.tgz" + integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== + dependencies: + "@react-native-community/cli-clean" "12.3.6" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-doctor" "12.3.6" + "@react-native-community/cli-hermes" "12.3.6" + "@react-native-community/cli-plugin-metro" "12.3.6" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-types" "12.3.6" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== + +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.17": + version "0.73.17" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz" + integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native/dev-middleware" "0.73.8" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" + +"@react-native/normalize-colors@^0.73.0", "@react-native/normalize-colors@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== + +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@types/dns-packet@*": + version "5.6.5" + resolved "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/multicast-dns@^7.2.4": + version "7.2.4" + resolved "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz" + integrity sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw== + dependencies: + "@types/dns-packet" "*" + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "20.11.20" + resolved "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== + dependencies: + undici-types "~5.26.4" + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/sinon@^17.0.3": + version "17.0.3" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz" + integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.5" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/ws@^8.2.2", "@types/ws@^8.5.10": + version "8.5.10" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@vascosantos/moving-average@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz" + integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortable-iterator@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz" + integrity sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^2.0.1" + +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-signal@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.10" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz" + integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.1" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz" + integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1, base64-js@^1.5.1, base64-js@1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blockstore-core@^4.0.0: + version "4.4.0" + resolved "https://registry.npmjs.org/blockstore-core/-/blockstore-core-4.4.0.tgz" + integrity sha512-tjOJAJMPWlqahqCjn5awLJz2eZeJnrGOBA0OInBFK69/FfPZbSID2t7s5jFcBRhGaglca56BzG4t5XOV3MPxOQ== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-merge "^3.0.3" + it-pushable "^3.2.3" + multiformats "^13.0.1" + +blockstore-level@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/blockstore-level/-/blockstore-level-1.1.8.tgz" + integrity sha512-8+NLeoyAQZzWIf9TWl0kC3x0JpJf6bts02K1fg8MCxgx/z/Leh4gVCzSGvYDuorHicOCVsyWv4+3ldlrnzRXoA== + dependencies: + blockstore-core "^4.0.0" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + level "^8.0.1" + multiformats "^13.0.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-readablestream-to-it@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz" + integrity sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg== + +browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0": + version "4.23.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +bson@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz" + integrity sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001587: + version "1.0.30001605" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz" + integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cborg@^4.0.0, cborg@^4.0.1, cborg@^4.0.3: + version "4.0.9" + resolved "https://registry.npmjs.org/cborg/-/cborg-4.0.9.tgz" + integrity sha512-xAuZbCDUOZxCe/ZJuIrnlG1Bk1R0qhwCXdnPYxVmqBSqm9M3BeE3G6Qoj5Zq+8epas36bT3vjiInDTJ6BVH6Rg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.36.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz" + integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + dependencies: + browserslist "^4.23.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +datastore-core@^9.0.0, datastore-core@^9.2.7: + version "9.2.8" + resolved "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.8.tgz" + integrity sha512-+S3rI6FSQphrGQZraYcCLeaVzCpDkNBYBk9a8QU8Kt+7xPAphNVA6a37kc6K9CQBppVOOmRaPBKU19fhHJLszg== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-datastore "^8.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-sort "^3.0.4" + it-take "^3.0.4" + +dayjs@^1.8.15: + version "1.11.10" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz" + integrity sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg== + dependencies: + execa "^7.1.1" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +delay@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz" + integrity sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== + dependencies: + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +dns-over-http-resolver@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.2.tgz" + integrity sha512-5batkHOjCkuAfrFa+IPmt3jyeZqLtSMfAo1HQp3hfwtzgUwHooecTFplnYC093u5oRNL4CQHCXh3OfER7+vWrA== + dependencies: + debug "^4.3.4" + receptacle "^1.3.2" + +dns-packet@^5.2.2, dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.728" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz" + integrity sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +envinfo@^7.10.0: + version "7.11.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz" + integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +event-target-shim@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz" + integrity sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: + version "4.3.6" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz" + integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== + dependencies: + strnum "^1.0.5" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@^0.206.0, flow-parser@0.*: + version "0.206.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz" + integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== + +freeport-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz" + integrity sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-iterator@^2.0.0, get-iterator@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz" + integrity sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob@^7.1.1, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +helia@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/helia/-/helia-3.0.1.tgz" + integrity sha512-Uf9h2RQuiyZxQkBXmbV9HF9/ILSWellXDuSk9Qwn+hRwtlIuEmaHW2HIRHXoaUF9A+WBPplLmiShaYtbaOgbMQ== + dependencies: + "@chainsafe/libp2p-gossipsub" "^11.0.0" + "@chainsafe/libp2p-noise" "^14.0.0" + "@chainsafe/libp2p-yamux" "^6.0.1" + "@helia/block-brokers" "~1.0.0" + "@helia/delegated-routing-v1-http-api-client" "^1.1.0" + "@helia/interface" "^3.0.1" + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.1" + "@ipld/dag-pb" "^4.0.3" + "@libp2p/autonat" "^1.0.1" + "@libp2p/bootstrap" "^10.0.2" + "@libp2p/circuit-relay-v2" "^1.0.2" + "@libp2p/dcutr" "^1.0.1" + "@libp2p/identify" "^1.0.1" + "@libp2p/interface" "^1.1.1" + "@libp2p/kad-dht" "^12.0.2" + "@libp2p/keychain" "^4.0.2" + "@libp2p/logger" "^4.0.4" + "@libp2p/mdns" "^10.0.2" + "@libp2p/mplex" "^10.0.2" + "@libp2p/ping" "^1.0.1" + "@libp2p/tcp" "^9.0.2" + "@libp2p/upnp-nat" "^1.0.1" + "@libp2p/utils" "^5.2.0" + "@libp2p/webrtc" "^4.0.3" + "@libp2p/websockets" "^8.0.2" + "@libp2p/webtransport" "^4.0.3" + blockstore-core "^4.0.0" + cborg "^4.0.3" + datastore-core "^9.0.0" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipns "^8.0.0" + it-drain "^3.0.5" + libp2p "^1.0.3" + mortice "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" + integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" + integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== + dependencies: + hermes-estree "0.20.1" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interface-blockstore@^5.0.0, interface-blockstore@^5.2.7: + version "5.2.10" + resolved "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.10.tgz" + integrity sha512-9K48hTvBCGsKVD3pF4ILgDcf+W2P/gq0oxLcsHGB6E6W6nDutYkzR+7k7bCs9REHrBEfKzcVDEKieiuNM9WRZg== + dependencies: + interface-store "^5.0.0" + multiformats "^13.0.1" + +interface-datastore@^8.0.0, interface-datastore@^8.1.0, interface-datastore@^8.2.0, interface-datastore@^8.2.10, interface-datastore@^8.2.2: + version "8.2.11" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.11.tgz" + integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.2" + +interface-store@^5.0.0, interface-store@^5.1.0, interface-store@^5.1.5: + version "5.1.8" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== + +ipaddr.js@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +ipfs-bitswap@^20.0.0: + version "20.0.2" + resolved "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-20.0.2.tgz" + integrity sha512-B/pPf0Dvnp/TzZ/jk7IElxCH+MwxTCe8YvyQzsQ4i8RhUh0IwyyaHPy0LSVGuJpADNjaaZQffe6DSxwmRKF7uA== + dependencies: + "@libp2p/interface" "^1.0.0" + "@libp2p/logger" "^4.0.0" + "@libp2p/utils" "^5.0.0" + "@multiformats/multiaddr" "^12.1.0" + "@vascosantos/moving-average" "^1.1.0" + any-signal "^4.1.1" + events "^3.3.0" + interface-blockstore "^5.0.0" + interface-store "^5.1.0" + it-drain "^3.0.5" + it-foreach "^2.0.2" + it-length-prefixed "^9.0.0" + it-map "^3.0.2" + it-pipe "^3.0.1" + it-take "^3.0.1" + just-debounce-it "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + protons-runtime "^5.0.0" + timeout-abort-controller "^3.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + varint "^6.0.0" + varint-decoder "^1.0.0" + +ipns@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/ipns/-/ipns-7.0.2.tgz" + integrity sha512-jsrIgsCmFZL/kATuO+4N5Oy3b4xhnO42N39nCLyhhC8NM+SZIxTmZmUSDU0GoI8Vn0X/Zy2Sj3Lxbhg3UlVMUA== + dependencies: + "@libp2p/crypto" "^2.0.3" + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.2" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^12.0.1" + protons-runtime "^5.0.0" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +ipns@^8.0.0: + version "8.0.4" + resolved "https://registry.npmjs.org/ipns/-/ipns-8.0.4.tgz" + integrity sha512-iBrlCBm5fsMJW0BvVNwXLOadsyeTc9fz9PJAxJ3YggXgrx5T6lfRgVfTQsnYeByRADGfpWGOvW6zqnu8a3dcYw== + dependencies: + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.1.0" + "@libp2p/logger" "^4.0.3" + "@libp2p/peer-id" "^4.0.3" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^13.0.0" + protons-runtime "^5.2.1" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-loopback-addr@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz" + integrity sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg== + +is-network-error@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz" + integrity sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +it-all@^3.0.0, it-all@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz" + integrity sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ== + +it-byte-stream@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.8.tgz" + integrity sha512-H32LbN6kdX8HXqH68z5uivfkVYJEi5tIPRwIQNR5Qsx3uoDRhYdBRHzf3NOVAf6vqulFUSQLuU+Y0rs/QeWn3A== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.1" + uint8arraylist "^2.4.1" + +it-drain@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz" + integrity sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA== + +it-filter@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz" + integrity sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g== + dependencies: + it-peekable "^3.0.0" + +it-first@^3.0.1, it-first@^3.0.3, it-first@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-first/-/it-first-3.0.4.tgz" + integrity sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg== + +it-foreach@^2.0.2, it-foreach@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-foreach/-/it-foreach-2.0.6.tgz" + integrity sha512-OVosBHJsdXpAyeFlCbe3IGZia+65UykyAznakNsKXK+b99dbhuu/mOnXxTadDEo1GWhKx+WA8RNanKkMf07zQw== + dependencies: + it-peekable "^3.0.0" + +it-length-prefixed-stream@^1.0.0, it-length-prefixed-stream@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.6.tgz" + integrity sha512-MEby4r8n3XIYXjaWT3DweCuhBPQmFVT8RdI1BNjYQ5gelbFD3NLdjYpTI3TVmSEs/aJfgpfVFZzy6iP7OCxIgw== + dependencies: + it-byte-stream "^1.0.0" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.4.1" + +it-length-prefixed@^9.0.0, it-length-prefixed@^9.0.1, it-length-prefixed@^9.0.4: + version "9.0.4" + resolved "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.4.tgz" + integrity sha512-lz28fykbG0jq7s5XtvlzGxO5BeSOw6ikymkRllxjL21V5VKLcvB4pHr9wPvEnsAJ2et1xpOk3BRTMq9XrhgKsg== + dependencies: + err-code "^3.0.1" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^5.0.1" + +it-length@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-length/-/it-length-3.0.4.tgz" + integrity sha512-RS3thYkvqtWksrV7SaAnTv+pgY7ozpS17HlRvWvcnoRjVyNJMuffdCkIKpKNPTq5uZw9zVnkVKLO077pJn5Yhg== + +it-map@^3.0.2, it-map@^3.0.4, it-map@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz" + integrity sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w== + dependencies: + it-peekable "^3.0.0" + +it-merge@^3.0.0, it-merge@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz" + integrity sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA== + dependencies: + it-pushable "^3.2.0" + +it-ndjson@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/it-ndjson/-/it-ndjson-1.0.5.tgz" + integrity sha512-2UEROCo458dDu9dABKb9fvD34p2YL6SqV5EOXN8SysX2Fpx0MSN69EiBmLLDDYSpQlrW0I5j3Tm8DtEIL5NsIw== + +it-pair@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz" + integrity sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + +it-parallel@^3.0.6: + version "3.0.6" + resolved "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.6.tgz" + integrity sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A== + dependencies: + p-defer "^4.0.0" + +it-peekable@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.3.tgz" + integrity sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w== + +it-pipe@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz" + integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== + dependencies: + it-merge "^3.0.0" + it-pushable "^3.1.2" + it-stream-types "^2.0.1" + +it-protobuf-stream@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.2.tgz" + integrity sha512-epZBuG+7cPaTxCR/Lf3ApshBdA9qfflGPQLfLLrp9VQ0w67Z2xo4H+SLLetav57/29oPtAXwVaoyemg99JOWzA== + dependencies: + it-length-prefixed-stream "^1.0.0" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.1" + +it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + +it-reader@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz" + integrity sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg== + dependencies: + it-stream-types "^2.0.1" + uint8arraylist "^2.0.0" + +it-sort@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-sort/-/it-sort-3.0.4.tgz" + integrity sha512-tvnC93JZZWjX4UxALy0asow0dzXabkoaRbrPJKClTKhNCqw4gzHr+H5axf1gohcthedRRkqd/ae+wl7WqoxFhw== + dependencies: + it-all "^3.0.0" + +it-stream-types@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz" + integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== + +it-take@^3.0.1, it-take@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz" + integrity sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA== + +it-ws@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/it-ws/-/it-ws-6.1.1.tgz" + integrity sha512-oyk4eCeZto2lzWDnJOa3j1S2M+VOGKUh8isEf94ySoaL6IFlyie0T4P9E0ZUaIvX8LyJxYFHFKCt8Zk7Sm/XPQ== + dependencies: + "@types/ws" "^8.2.2" + event-iterator "^2.0.0" + it-stream-types "^2.0.1" + uint8arrays "^5.0.0" + ws "^8.4.0" + +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.2.1: + version "17.12.3" + resolved "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz" + integrity sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +just-debounce-it@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz" + integrity sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0, level@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/level/-/level-8.0.1.tgz" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +libp2p@^1.0.3, libp2p@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/libp2p/-/libp2p-1.2.3.tgz" + integrity sha512-eBPPliHno1pmMWfi+YR40YKc+XBvhiC3G583xy0dTCG3X+a+r8DpSEyd72dwPvyohY4k58MDcdi6zwjTRHnTIw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/logger" "^4.0.6" + "@libp2p/multistream-select" "^5.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/peer-store" "^10.0.10" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + datastore-core "^9.2.7" + interface-datastore "^8.2.10" + it-merge "^3.0.3" + it-parallel "^3.0.6" + merge-options "^3.0.4" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz" + integrity sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ== + dependencies: + inherits "^2.0.1" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-transformer@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.8.tgz" + integrity sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.20.1" + nullthrows "^1.1.1" + +metro-cache-key@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.8.tgz" + integrity sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA== + +metro-cache@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.8.tgz" + integrity sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ== + dependencies: + metro-core "0.80.8" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.8.tgz" + integrity sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.8" + metro-cache "0.80.8" + metro-core "0.80.8" + metro-runtime "0.80.8" + +metro-core@^0.80.3, metro-core@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.8.tgz" + integrity sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.8" + +metro-file-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.8.tgz" + integrity sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.8.tgz" + integrity sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.8.tgz" + integrity sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ== + +metro-runtime@^0.80.3, metro-runtime@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.8.tgz" + integrity sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.8.tgz" + integrity sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.8" + nullthrows "^1.1.1" + ob1 "0.80.8" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.8.tgz" + integrity sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.8" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.8.tgz" + integrity sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.8.tgz" + integrity sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.8" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-minify-terser "0.80.8" + metro-source-map "0.80.8" + metro-transform-plugins "0.80.8" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.8.tgz" + integrity sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.20.1" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-config "0.80.8" + metro-core "0.80.8" + metro-file-map "0.80.8" + metro-resolver "0.80.8" + metro-runtime "0.80.8" + metro-source-map "0.80.8" + metro-symbolicate "0.80.8" + metro-transform-plugins "0.80.8" + metro-transform-worker "0.80.8" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +mortice@^3.0.1, mortice@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz" + integrity sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ== + dependencies: + observable-webworkers "^2.0.1" + p-queue "^8.0.1" + p-timeout "^6.0.0" + +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +multiformats@^12.0.1, multiformats@^12.1.1: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^12.1.3: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.0.1, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abi@^3.3.0: + version "3.56.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz" + integrity sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q== + dependencies: + semver "^7.3.5" + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-datachannel@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.5.3.tgz" + integrity sha512-aOp+6P2TC6+u36L06yeUAYpBp5FqpDGjIbIJQvC5AY9HX9ZVoqUO3ysLlswnpQRM7wJt8LhBuHxiPkLoM5xEUA== + dependencies: + node-domexception "^2.0.1" + prebuild-install "^7.0.1" + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.1.tgz" + integrity sha512-M85rnSC7WQ7wnfQTARPT4LrK7nwCHLdDFOCcItZMhTQjyCebJH8GciKqYJNgaOFZs9nFmTmd/VMyi3OW5jA47w== + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.8.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.8.tgz" + integrity sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +observable-webworkers@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz" + integrity sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-defer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz" + integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== + +p-event@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-6.0.0.tgz" + integrity sha512-Xbfxd0CfZmHLGKXH32k1JKjQYX6Rkv0UtQdaFJ8OyNcf+c0oWCeXHc1C4CX/IESZLmcvfPa5aFIO/vCr5gqtag== + dependencies: + p-timeout "^6.1.2" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-queue@^7.3.4: + version "7.4.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + +p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +p-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + +p-timeout@^6.0.0, p-timeout@^6.1.1, p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +prebuild-install@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +private-ip@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/private-ip/-/private-ip-3.0.2.tgz" + integrity sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + ip-regex "^5.0.0" + ipaddr.js "^2.1.0" + netmask "^2.0.2" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress-events@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/progress-events/-/progress-events-1.0.0.tgz" + integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^7.2.6: + version "7.2.6" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protons-runtime@^5.0.0, protons-runtime@^5.2.1, protons-runtime@^5.4.0: + version "5.4.0" + resolved "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz" + integrity sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pvtsutils@^1.3.2: + version "1.3.5" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +race-event@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/race-event/-/race-event-1.2.0.tgz" + integrity sha512-7EvAjTu9uuKa03Jky8yfSy6/SnnMTh6nouNmdeWv9b0dT8eDZC5ylx30cOR9YO9otQorVjjkIuSHQ5Ml/bKwMw== + +race-signal@^1.0.0, race-signal@^1.0.1, race-signal@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/race-signal/-/race-signal-1.0.2.tgz" + integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-devtools-core@^4.27.7: + version "4.28.5" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz" + integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-native-webrtc@^118.0.1: + version "118.0.1" + resolved "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-118.0.1.tgz" + integrity sha512-gjbBIV/0VyplavbOsQw9mpVJ4WHTEYZzi4PN7Oz18p2Ucsc5yEVUhtN5NQep8w6VDH1DNzuXXBPq5uJq9uqbMA== + dependencies: + base64-js "1.5.1" + debug "4.3.4" + event-target-shim "6.0.2" + +react-native@*, react-native@>=0.60.0: + version "0.73.6" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.73.6.tgz" + integrity sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.17" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +"react@^16.0.0 || ^17.0.0 || ^18.0.0", react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sax@>=0.6.0: + version "1.3.0" + resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5, semver@^7.5.2: + version "7.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map-support@^0.5.16, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-to-it@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^5.0.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terser@^5.15.0: + version "5.30.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz" + integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + +timestamp-nano@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/timestamp-nano/-/timestamp-nano-1.0.1.tgz" + integrity sha512-4oGOVZWTu5sl89PtCDnhQBSt7/vL1zVEwAfxH1p49JhTosxzVQWYBYFRFZ8nJmo0G6f824iyP/44BFAwIoKvIA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +tslib@^2.0.1, tslib@^2.4.0, tslib@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +uint8-varint@^2.0.1, uint8-varint@^2.0.2, uint8-varint@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.4.1, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.8.tgz" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.6: + version "4.0.10" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.2.tgz" + integrity sha512-S0GaeR+orZt7LaqzTRs4ZP8QqzAauJ+0d4xvP2lJTA99jIkKsE2FgDs4tGF/K/z5O9I/2W5Yvrh7IuqNeYH+0Q== + dependencies: + multiformats "^13.0.0" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +varint-decoder@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/varint-decoder/-/varint-decoder-1.0.0.tgz" + integrity sha512-JkOvdztASWGUAsXshCFHrB9f6AgR2Q8W08CEyJ+43b1qtFocmI8Sp1R/M0E/hDOY2FzVIqk63tOYLgDYWuJ7IQ== + dependencies: + varint "^5.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.0.0: + version "3.6.20" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/wherearewe/-/wherearewe-2.0.1.tgz" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.0" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^7.5.1: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.16.0, ws@^8.4.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xml2js@^0.6.0, xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1: + version "2.4.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/ipfs_transformers/s3_kit.py b/ipfs_transformers/s3_kit.py index 8fa5d8e..dddba36 100755 --- a/ipfs_transformers/s3_kit.py +++ b/ipfs_transformers/s3_kit.py @@ -544,91 +544,3 @@ def config_to_boto(self, s3_config): return results else: raise Exception("s3_config must contain accessKey, secretKey, and endpoint") - - def test(self): - session = None - endpoint = "" - access_key = "" - secret_key = "" - host_bucket = "" - bucket = "swissknife-models" - dir = "bge-base-en-v1.5@hf" - config = { - "accessKey": access_key, - "secretKey": secret_key, - "endpoint": endpoint, - } - config = self.config_to_boto(config) - session = self.get_session(config) - bucket = resource(**config).Bucket(bucket) - bucket_objects = bucket.objects.filter(Prefix=dir) - bucket_object_metadata = bucket_objects.all() - objects = [] - directory = {} - for obj in bucket_object_metadata: - objects.append(obj) - for obj in objects: - metadata = { - "key": obj.key, - "last_modified": obj.last_modified, - "size": obj.size, - "e_tag": obj.e_tag, - } - directory[obj.key] = metadata - return directory - - def test2(self): - session = None - endpoint = "" - access_key = "" - secret_key = "" - host_bucket = "" - bucket = "cloudkit-beta" - key = 'stablelm-zephyr-3b-GGUF-Q2_K@gguf/manifest.json' - key1 = 'stablelm-zephyr-3b-GGUF-Q2_K-Q2_K@gguf/README.md' - key2 = 'stablelm-zephyr-3b-GGUF-Q2_K-Q2_K@gguf/config.json' - key3 = 'stablelm-zephyr-3b-GGUF-Q2_K-Q2_K@gguf/manifest.json' - key4 = 'stablelm-zephyr-3b-GGUF-Q2_K-Q2_K@gguf/stablelm-zephyr-3b.Q2_K.gguf' - config = { - "accessKey": access_key, - "secretKey": secret_key, - "endpoint": endpoint, - } - config = self.config_to_boto(config) - session = self.get_session(config) - results = self.s3_ls_file(key, bucket, s3cfg=config) - results1 = self.s3_ls_file(key1, bucket, s3cfg=config) - results2 = self.s3_ls_file(key2, bucket, s3cfg=config) - results3 = self.s3_ls_file(key3, bucket, s3cfg=config) - results4 = self.s3_ls_file(key4, bucket, s3cfg=config) - - return results - - - def test3(self): - session = None - endpoint = "" - access_key = "" - secret_key = "" - host_bucket = "" - bucket = "cloudkit-beta" - key = 'Airoboros-c34B-3.1.2-GGUF-Q4_0-Q4_0@gguf/README.md' - config = { - "accessKey": access_key, - "secretKey": secret_key, - "endpoint": endpoint, - } - config = self.config_to_boto(config) - session = self.get_session(config) - results = self.s3_ls_file(key, bucket, s3cfg=config) - return results - - -# -#if __name__ == '__main__': -# test_this = s3_kit(None) -# test_this.test2() -# test_this.test3() -# -# pass - \ No newline at end of file diff --git a/ipfs_transformers/test/test_hf_ipfs.py b/ipfs_transformers/test/test_hf_ipfs.py index 6134913..999be64 100644 --- a/ipfs_transformers/test/test_hf_ipfs.py +++ b/ipfs_transformers/test/test_hf_ipfs.py @@ -16,14 +16,16 @@ def test(self, **kwargs): from transformers import AutoModel #model = AutoModel.from_pretrained("google-bert/bert-base-cased") #what do we want to call the library? - from ipfs_transformers.ipfs_transformers import AutoModel + from ipfs_transformers import AutoModel #do we want to use the ipfs hash or the model name? This requires IPNS to be enabled #model = T5Model.from_ipfs("QmWJr4M1VN5KpJjqCsJsJg7PDmFoqQYs1BKpYxcdMY1qkh") #model = AutoModelForSeq2SeqLM.from_auto_download("t0") # 40GB test this afterwards # model = AutoModelForSeq2SeqLM.from_auto_download("stablelm-zephyr-3b-GGUF-Q2_K") # 1.5GB - model = AutoModel.from_auto_download("bge-small-en-v1.5") # 1.5GB + # model = AutoModel.from_auto_download("bge-small-en-v1.5") # 1.5GB + model = AutoModel.from_ipfs("QmccfbkWLYs9K3yucc6b3eSt8s8fKcyRRt24e3CDaeRhM1") # 1.5GB + #model = T5Model.from_auto_download("google-bert/t5_11b_trueteacher_and_anli") print(dir(model)) print("done") diff --git a/orbitdb_kit/import-collection.js b/orbitdb_kit/import-collection.js new file mode 100644 index 0000000..78218ab --- /dev/null +++ b/orbitdb_kit/import-collection.js @@ -0,0 +1,29 @@ +import { WebSocket } from 'ws'; +import fs from 'fs'; +import path from 'path'; + +const parent_dir = path.dirname("../.."); +const resolve_path = path.resolve(parent_dir) +const collection_path = path.join(resolve_path, 'collection.json'); + +export default async function main(collection_path){ + const ws = new WebSocket('ws://localhost:8080'); + ws.on('open', () => { + let collection = fs.readFileSync(collection_path, 'utf8'); + let collection_json = JSON.parse(collection); + for (let i = 0; i < Object.keys(collection_json).length; i++){ + let id = Object.keys(collection_json)[i]; + let content = collection_json[id]; + ws.send( + JSON.stringify({ + 'insert':{ _id: id, content: content } + }) + ) + } + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(collection_path); \ No newline at end of file diff --git a/orbitdb_kit/import_hf_dataset.js b/orbitdb_kit/import_hf_dataset.js new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/orbitdb_kit/import_hf_dataset.js @@ -0,0 +1 @@ + diff --git a/orbitdb_kit/orbitv3-master.js b/orbitdb_kit/orbitv3-master.js new file mode 100644 index 0000000..330c46c --- /dev/null +++ b/orbitdb_kit/orbitv3-master.js @@ -0,0 +1,184 @@ +import {createOrbitDB, Identities, OrbitDBAccessController} from '@orbitdb/core' +import {createHelia} from 'helia' +import {v4 as uuidv4} from 'uuid'; +import {EventEmitter} from "events"; +import {createLibp2p} from 'libp2p' +import {identify} from '@libp2p/identify' +import {noise} from '@chainsafe/libp2p-noise' +import {yamux} from '@chainsafe/libp2p-yamux' +import {gossipsub} from '@chainsafe/libp2p-gossipsub' +import {bitswap} from '@helia/block-brokers' +import {tcp} from '@libp2p/tcp' +import {mdns} from '@libp2p/mdns' +import {LevelBlockstore} from 'blockstore-level' +import {createRequire} from "module"; +import { WebSocketServer } from 'ws' + +const require = createRequire(import.meta.url); + +const ipfsLibp2pOptions = { + transports: [ + tcp(), + ], + streamMuxers: [ + yamux() + ], + connectionEncryption: [ + noise() + ], + peerDiscovery: [ + mdns({ + interval: 20e3 + }) + ], + services: { + pubsub: gossipsub({ + allowPublishToZeroPeers: true + }), + identify: identify() + }, + connectionManager: {} +} + +EventEmitter.defaultMaxListeners = 20; + +let ipfs +let orbitdb +let db + +async function run() { + process.env.LIBP2P_FORCE_PNET = "1" + const argv = require('minimist')(process.argv.slice(2)) + let ipAddress + if (!argv.ipAddress) { + ipAddress = "127.0.0.1" + } else { + ipAddress = argv.ipAddress + } + + process.on('SIGTERM', handleTerminationSignal); + process.on('SIGINT', handleTerminationSignal); + console.info('Script is running. Press CTRL+C to terminate.'); + + const libp2p = await createLibp2p({ + addresses: { + listen: [`/ip4/${ipAddress}/tcp/0`] + }, ...ipfsLibp2pOptions + }) + const blockstore = new LevelBlockstore(`./ipfs/1/blocks`) + ipfs = await createHelia({blockstore: blockstore, libp2p: libp2p, blockBrokers: [bitswap()]}) + const identities = await Identities({ipfs, path: `./orbitdb/1/identities`}) + const id = "1" + identities.createIdentity({id}) // Remove the unused variable 'identity' + orbitdb = await createOrbitDB({ipfs: ipfs, identities, id: `1`, directory: `./orbitdb/1`}) + + db = await orbitdb.open('ipfs_transformers', + { + type: 'documents', + AccessController: OrbitDBAccessController({write: ["*"]}) + }) + console.info(`running with db address ${db.address}`) + // Add a new WebSocket server + const wss = new WebSocketServer({ port: 8080 }) + wss.on('connection', (ws) => { + console.log('New WebSocket connection'); + ws.on('message', (message) => { + message = JSON.parse(message.toString()); + console.log('Received message:', message); + let method = Object.keys(message)[0]; + let data = message[method]; + // Handle WebSocket messages here + switch (method) { + case 'insert': + // Handle insert logic + let insertKey = data._id; + let insertValue = data.content; + console.log('Inserting data: ', insertKey, insertValue); + validate(insertValue).then((result) => { + if (result) { + db.put(data).then(() => { + console.log('Data inserted:', data); + ws.send('Data inserted'); + }).catch((error) => { + console.error('Error inserting data:', error); + ws.send('Error inserting data'); + }); + } + else{ + console.error('Data validation failed:', insertValue); + ws.send('Data validation failed'); + } + }); + break; + case 'update': + // Handle update logic + let updateKey = data._id; + let updateValue = data.content; + let updatedDoc = {_id: updateKey, content: updateValue}; + let docToUpdate = db.get(updateKey).then((doc) => { + validate(updatedDoc).then((result) => { + db.put(updatedDoc).then(() => { + console.log('Data updated:', data); + ws.send('Data updates'); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }) + }).catch((error) => { + console.error('Error upfating document:', error); + ws.send('Error updating document'); + }); + break; + case 'select': + // Handle select logic + let selectID = data._id; + let docToSelect = db.get(selectID).then((doc) => { + console.log('Selected document:', doc); + ws.send(JSON.stringify(doc)); + }).catch((error) => { + console.error('Error selecting document:', error); + ws.send('Error selecting document'); + }) + break; + case 'delete': + // Handle delete by ID logic + let deleteId = data._id; + let docToDelete = db.get(deleteId).then((doc) => { + db.del(deleteId).then((deletedDoc) => { + console.log('Document deleted:', deletedDoc); + ws.send('Document deleted'); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + break; + default: + console.log('Unknown message:', message); + break; + } + }); + }); +} + +async function validate() { + // Add validation logic here + return true; +} + +async function handleTerminationSignal() { + console.info('received termination signal, cleaning up and exiting...'); + await db.close() + await orbitdb.stop() + await ipfs.stop() + process.exit(); +} + +await run() \ No newline at end of file diff --git a/orbitdb_kit/orbitv3-slave.js b/orbitdb_kit/orbitv3-slave.js new file mode 100644 index 0000000..a4cbaa9 --- /dev/null +++ b/orbitdb_kit/orbitv3-slave.js @@ -0,0 +1,227 @@ +import {createOrbitDB, Identities, OrbitDBAccessController} from '@orbitdb/core' +import {createHelia} from 'helia' +import {EventEmitter} from "events"; +import {createLibp2p} from 'libp2p' +import {identify} from '@libp2p/identify' +import {noise} from '@chainsafe/libp2p-noise' +import {yamux} from '@chainsafe/libp2p-yamux' +import {gossipsub} from '@chainsafe/libp2p-gossipsub' +import {bitswap} from '@helia/block-brokers' +import {tcp} from '@libp2p/tcp' +import {mdns} from '@libp2p/mdns' +import {LevelBlockstore} from 'blockstore-level' +import {createRequire} from "module"; +import { WebSocketServer } from 'ws' + +const require = createRequire(import.meta.url); + +const ipfsLibp2pOptions = { + transports: [ + tcp(), + ], + streamMuxers: [ + yamux() + ], + connectionEncryption: [ + noise() + ], + peerDiscovery: [ + mdns({ + interval: 20e3 + }) + ], + services: { + pubsub: gossipsub({ + allowPublishToZeroPeers: true + }), + identify: identify() + }, + connectionManager: { + } +} + +EventEmitter.defaultMaxListeners = 20; + +let ipfs +let orbitdb +let db + +async function run () { + const argv = require('minimist')(process.argv.slice(2)) + let ipAddress + let dbAddress + if (!argv.ipAddress) { + ipAddress = "127.0.0.1" + } else { + ipAddress = argv.ipAddress + } + if (!argv.dbAddress) { + dbAddress = "/orbitdb/zdpuB31L6gJz49erikZSQT3A1erJbid8oUTBrjLtBwjjXe3R5" + } + else { + dbAddress = argv.dbAddress + } + process.on('SIGTERM', handleTerminationSignal); + process.on('SIGINT', handleTerminationSignal); + console.info('Script is running. Press CTRL+C to terminate.'); + + const libp2p = await createLibp2p({ addresses: { + listen: [`/ip4/${ipAddress}/tcp/0`] + }, ...ipfsLibp2pOptions}) + const blockstore = new LevelBlockstore(`./ipfs/2/blocks`) + ipfs = await createHelia({blockstore: blockstore, libp2p: libp2p, blockBrokers: [bitswap()]}) + const identities = await Identities({ ipfs, path: `./orbitdb/2/identities` }) + const id = "2" + const identity = identities.createIdentity({ id }) + orbitdb = await createOrbitDB({ipfs: ipfs, identities, id: `2`, directory: `./orbitdb/2`}) + + db = await orbitdb.open(dbAddress, + {type: 'documents', + AccessController: OrbitDBAccessController({ write: ["*"], sync: false}), + }) + let oldHeads = await db.log.heads() + console.debug(`${new Date().toISOString()} initial heads ${JSON.stringify(Array.from(oldHeads, h => h.payload))}`) + await new Promise(r => setTimeout(r, 5000)); + await db.close() + console.debug(`${new Date().toISOString()} opening db for sync`) + db = await orbitdb.open(dbAddress, + {type: 'documents', + AccessController: OrbitDBAccessController({ write: ["*"]}), + }) + db.events.on('join', async (peerId, heads) => { + for await (let entry of heads) { + console.info(`peer ${peerId} joined with head ${JSON.stringify(entry.payload)}`) + } + if (oldHeads) { + for (let hash of Array.from(oldHeads, h => h.hash)) { + let it = db.log.iterator({gt: hash}) + for await (let entry of it) { + console.debug(`new startup entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + } + }) + console.info(`${new Date().toISOString()}running with db address ${db.address}`) + const wss = new WebSocketServer({ port: 8888 }) + wss.on('connection', (ws) => { + console.log('New WebSocket connection'); + ws.on('message', (message) => { + message = JSON.parse(message.toString()); + console.log('Received message:', message); + let method = Object.keys(message)[0]; + let data = message[method]; + // Handle WebSocket messages here + switch (method) { + case 'insert': + // Handle insert logic + let insertKey = data._id; + let insertValue = data.content; + console.log('Inserting data: ', insertKey, insertValue); + validate(insertValue).then((result) => { + if (result) { + db.put(data).then(() => { + console.log('Data inserted:', data); + ws.send('Data inserted'); + }).catch((error) => { + console.error('Error inserting data:', error); + ws.send('Error inserting data'); + }); + } + else{ + console.error('Data validation failed:', insertValue); + ws.send('Data validation failed'); + } + }); + break; + case 'update': + // Handle update logic + let updateKey = data._id; + let updateValue = data.content; + let updatedDoc = {_id: updateKey, content: updateValue}; + let docToUpdate = db.get(updateKey).then((doc) => { + validate(updatedDoc).then((result) => { + db.put(updatedDoc).then(() => { + console.log('Data updated:', data); + ws.send('Data updates'); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }); + }).catch((error) => { + console.error('Error updating data:', error); + ws.send('Error updating data'); + }) + }).catch((error) => { + console.error('Error upfating document:', error); + ws.send('Error updating document'); + }); + break; + case 'select': + // Handle select logic + let selectID = data._id; + let docToSelect = db.get(selectID).then((doc) => { + console.log('Selected document:', doc); + ws.send(JSON.stringify(doc)); + }).catch((error) => { + console.error('Error selecting document:', error); + ws.send('Error selecting document'); + }) + break; + case 'delete': + // Handle delete by ID logic + let deleteId = data._id; + let docToDelete = db.get(deleteId).then((doc) => { + db.del(deleteId).then((deletedDoc) => { + console.log('Document deleted:', deletedDoc); + ws.send('Document deleted'); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + }).catch((error) => { + console.error('Error deleting document:', error); + ws.send('Error deleting document'); + }); + break; + default: + console.log('Unknown message:', message); + break; + } + }); + }); + console.info(`${new Date().toISOString()} getting updates ...`) + db.events.on('update', async (entry) => { + console.debug(`new head entry op ${entry.payload.op} with value ${JSON.stringify(entry.payload.value)}`) + if (oldHeads) { + for (let hash of Array.from(oldHeads, h => h.hash)) { + let it = db.log.iterator({gt: hash, lte: entry.hash}) + for await (let entry of it) { + console.debug(`new updated entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + } else { + let it = db.log.iterator({lte: entry.hash}) + for await (let entry of it) { + console.debug(`new updated entry ${JSON.stringify(entry.payload)}`) + oldHeads = [entry] + } + } + }) + console.info(`${new Date().toISOString()} searching result: `) + let result = await db.query(data => { + return data.content === "content 5000" + }) + console.info(`${new Date().toISOString()} result: `, JSON.stringify(result)) +} + +async function handleTerminationSignal() { + console.info('received termination signal, cleaning up and exiting...'); + await db.close() + await orbitdb.stop() + await ipfs.stop() + process.exit(); +} + +await run() \ No newline at end of file diff --git a/orbitdb_kit/package.json b/orbitdb_kit/package.json new file mode 100644 index 0000000..9ebe341 --- /dev/null +++ b/orbitdb_kit/package.json @@ -0,0 +1,36 @@ +{ + "name": "agwp2pdb", + "version": "1.0.0", + "description": "AGW P2P distributed database", + "main": "orbit.js", + "type": "module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "AGW", + "P2P", + "orbit" + ], + "author": "Karsten Ohme", + "license": "UNLICENSED", + "dependencies": { + "@chainsafe/libp2p-gossipsub": "^11.1.0", + "@chainsafe/libp2p-noise": "^15.0.0", + "@helia/block-brokers": "^1.0.0", + "@libp2p/bootstrap": "^10.0.12", + "@libp2p/circuit-relay-v2": "^1.0.12", + "@libp2p/mdns": "^10.0.12", + "@libp2p/tcp": "^9.0.12", + "@libp2p/webrtc": "^4.0.16", + "@libp2p/websockets": "^8.0.12", + "@orbitdb/core": "^2.0.1", + "blockstore-level": "^1.1.7", + "bson": "^6.2.0", + "helia": "^3.0.1", + "libp2p": "^1.2.0", + "minimist": "^1.2.8", + "private-ip": "^3.0.2", + "uuid": "^9.0.1" + } +} diff --git a/orbitdb_kit/websocket_test_master.js b/orbitdb_kit/websocket_test_master.js new file mode 100644 index 0000000..faf6314 --- /dev/null +++ b/orbitdb_kit/websocket_test_master.js @@ -0,0 +1,19 @@ +import { WebSocket } from 'ws'; + +export default async function main(){ + const ws = new WebSocket('ws://localhost:8080'); + ws.on('open', () => { + ws.send(JSON.stringify({'insert': { _id: '1', content: 'content 1' }})) + + ws.send(JSON.stringify({'select': { _id: '1' }})) + + ws.send(JSON.stringify({"update": { _id: '1', content: 'content 2' }})) + + ws.send(JSON.stringify({'delete': { _id: '1' }})) + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(); \ No newline at end of file diff --git a/orbitdb_kit/websocket_test_slave.js b/orbitdb_kit/websocket_test_slave.js new file mode 100644 index 0000000..c3bcbe7 --- /dev/null +++ b/orbitdb_kit/websocket_test_slave.js @@ -0,0 +1,19 @@ +import { WebSocket } from 'ws'; + +export default async function main(){ + const ws = new WebSocket('ws://localhost:8888'); + ws.on('open', () => { + ws.send(JSON.stringify({'insert': { _id: '1', content: 'content 1' }})) + + ws.send(JSON.stringify({'select': { _id: '1' }})) + + ws.send(JSON.stringify({"update": { _id: '1', content: 'content 2' }})) + + ws.send(JSON.stringify({'delete': { _id: '1' }})) + }); + ws.on('message', (message) => { + console.log('Received message:', message.toString()); + }); +} + +main(); \ No newline at end of file diff --git a/orbitdb_kit/yarn.lock b/orbitdb_kit/yarn.lock new file mode 100644 index 0000000..b3f46c1 --- /dev/null +++ b/orbitdb_kit/yarn.lock @@ -0,0 +1,6371 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@achingbrain/nat-port-mapper@^1.0.13": + version "1.0.13" + resolved "https://registry.npmjs.org/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.13.tgz" + integrity sha512-B5GL6ILDek72OjoEyFGEuuNYaEOYxO06Ulhcaf/5iQ4EO8uaZWS+OkolYST7L+ecJrkjfaSNmSAsWRRuh+1Z5A== + dependencies: + "@achingbrain/ssdp" "^4.0.1" + "@libp2p/logger" "^4.0.1" + default-gateway "^7.2.2" + err-code "^3.0.1" + it-first "^3.0.1" + p-defer "^4.0.0" + p-timeout "^6.1.1" + xml2js "^0.6.0" + +"@achingbrain/ssdp@^4.0.1": + version "4.0.6" + resolved "https://registry.npmjs.org/@achingbrain/ssdp/-/ssdp-4.0.6.tgz" + integrity sha512-Y4JE2L9150i50V6lg/Y8+ilhxRpUZKKv+PKo68Aj7MjPfaUAar6ZHilF9h4/Zb3q0fqGMXNc9o11cQLNI8J8bA== + dependencies: + event-iterator "^2.0.0" + freeport-promise "^2.0.0" + merge-options "^3.0.4" + xml2js "^0.6.2" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.20.0", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz" + integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz" + integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz" + integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.20.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz" + integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz" + integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-default-from" "^7.24.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz" + integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz" + integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz" + integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz" + integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz" + integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.1" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz" + integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz" + integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz" + integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz" + integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz" + integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz" + integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.5.0": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz" + integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-typescript" "^7.24.1" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.1.6": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz" + integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.4" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.13.13": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz" + integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-flow-strip-types" "^7.24.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.13.0": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/register@^7.13.16": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz" + integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.20.0", "@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@chainsafe/as-chacha20poly1305@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz" + integrity sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew== + +"@chainsafe/as-sha256@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.1.tgz" + integrity sha512-IqeeGwQihK6Y2EYLFofqs2eY2ep1I2MvQXHzOAI+5iQN51OZlUkrLgyAugu2x86xZewDk5xas7lNczkzFzF62w== + +"@chainsafe/is-ip@^2.0.1", "@chainsafe/is-ip@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + +"@chainsafe/libp2p-gossipsub@^11.0.0", "@chainsafe/libp2p-gossipsub@^11.1.0": + version "11.2.1" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-11.2.1.tgz" + integrity sha512-2NvlOY4Jfwn7U/sKF0kILl3+luHxq9hhEiBqZRqLTIV8LYmMQl9VpTMgMvRwKzgn/NDeZzsPb8olk2o00tkmZw== + dependencies: + "@libp2p/crypto" "^4.0.1" + "@libp2p/interface" "^1.1.2" + "@libp2p/interface-internal" "^1.0.7" + "@libp2p/peer-id" "^4.0.5" + "@libp2p/pubsub" "^9.0.8" + "@multiformats/multiaddr" "^12.1.14" + denque "^2.1.0" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + protobufjs "^7.2.6" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@chainsafe/libp2p-noise@^14.0.0": + version "14.1.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-14.1.0.tgz" + integrity sha512-uHmptoxgMsfDIP7cQMQ4Zp9+y27oON5+gloBLXi+7EJpMhyvo7tjafUxRILwLofzeAtfaF3ZHraoXRFUSbhK2Q== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^3.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-byte-stream "^1.0.0" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-noise@^15.0.0": + version "15.0.0" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.0.0.tgz" + integrity sha512-O8Y/WVU4J/qrnG72jwVhbmdXiBzv1dT9B3PMClCRmZ9z/5vVPEGRVXE/SVYeGF3bNuBTLoh+F+GaKG/9UHlMhg== + dependencies: + "@chainsafe/as-chacha20poly1305" "^0.1.0" + "@chainsafe/as-sha256" "^0.4.1" + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.0.0" + "@libp2p/peer-id" "^4.0.0" + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + it-length-prefixed "^9.0.1" + it-length-prefixed-stream "^1.0.0" + it-pair "^2.0.6" + it-pipe "^3.0.1" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + wherearewe "^2.0.1" + +"@chainsafe/libp2p-yamux@^6.0.1": + version "6.0.2" + resolved "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz" + integrity sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + get-iterator "^2.0.1" + it-foreach "^2.0.6" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + uint8arraylist "^2.4.8" + +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@helia/block-brokers@^1.0.0", "@helia/block-brokers@~1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@helia/block-brokers/-/block-brokers-1.0.0.tgz" + integrity sha512-VP9KDj6fNT1FKk/vWjDzk8eYyVclxHFQaOLI0+rvifg+w8X+atCa/v2JKzZzbW6BX3/dxcn/mZz+ZHgdmuQ1qg== + dependencies: + "@helia/interface" "^3.0.1" + "@libp2p/interface" "^1.1.1" + any-signal "^4.1.1" + interface-blockstore "^5.2.7" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + it-filter "^3.0.4" + it-foreach "^2.0.6" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +"@helia/delegated-routing-v1-http-api-client@^1.1.0": + version "1.1.2" + resolved "https://registry.npmjs.org/@helia/delegated-routing-v1-http-api-client/-/delegated-routing-v1-http-api-client-1.1.2.tgz" + integrity sha512-u+sVdOxFieusZh/AxC8c0lU1micWfAosju7A80n62rdJ1fr1lclkhhrlfaKWIgVOq+pwonEzoOE7QgnTL22tYw== + dependencies: + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.3" + "@multiformats/multiaddr" "^12.1.3" + any-signal "^4.1.1" + browser-readablestream-to-it "^2.0.3" + ipns "^7.0.1" + it-first "^3.0.3" + it-map "^3.0.4" + it-ndjson "^1.0.4" + multiformats "^12.1.1" + p-defer "^4.0.0" + p-queue "^7.3.4" + uint8arrays "^4.0.6" + +"@helia/interface@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@helia/interface/-/interface-3.0.1.tgz" + integrity sha512-ibaiN0InfFVf8TNOKK+wzoLqlrWx/Crk/yY5o+DNRvgI4fdaJofHEaSyDvFR/amTVhdFHnOK+3Mbh+jGktWapQ== + dependencies: + "@libp2p/interface" "^1.1.1" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipfs-bitswap "^20.0.0" + multiformats "^13.0.0" + progress-events "^1.0.0" + +"@ipld/dag-cbor@^9.0.0", "@ipld/dag-cbor@^9.0.6": + version "9.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz" + integrity sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-json@^10.0.1": + version "10.2.0" + resolved "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.2.0.tgz" + integrity sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA== + dependencies: + cborg "^4.0.0" + multiformats "^13.1.0" + +"@ipld/dag-pb@^4.0.3": + version "4.1.0" + resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.0.tgz" + integrity sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg== + dependencies: + multiformats "^13.1.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@libp2p/autonat@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/autonat/-/autonat-1.0.12.tgz" + integrity sha512-x4wb2weNY6zLkjEONHytfLFxNNZ7yTCZB/cFk2Dd5Kmg9W0PkefWjcrdDZdHJt4s2JwVFFkmTtxsvJBRlrtTQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/bootstrap@^10.0.12", "@libp2p/bootstrap@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.0.15.tgz" + integrity sha512-5GLppn6AW1CVHnTHnAkdtuOeVmB2HOGi65SxKLW0GBtS8zsuiuedtolbIN1mkPFsshYUhWMcVOcxNQn4tWJKMw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + +"@libp2p/circuit-relay-v2@^1.0.12", "@libp2p/circuit-relay-v2@^1.0.2": + version "1.0.15" + resolved "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.0.15.tgz" + integrity sha512-sOWIfiR4GWDDECCalyTZBc0qkSy1cQnM1B78eXNRVEq10EGEZ4/5qd0/Y3gWwrjGHWdMdq/4A+gHczzxa0kLVA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + it-protobuf-stream "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-retry "^6.2.0" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/crypto@^2.0.3": + version "2.0.8" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz" + integrity sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA== + dependencies: + "@libp2p/interface" "^0.1.6" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^12.0.1" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.6" + +"@libp2p/crypto@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^3.0.2": + version "3.0.4" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-3.0.4.tgz" + integrity sha512-FzSwBo+RJOUzdzEwug5ZL4dAGKwEBWTLzj+EmUTHHY6c87+oLh571DQk/w0oYObSD9hYbcKePgSBaZeBx0JaZg== + dependencies: + "@libp2p/interface" "^1.1.1" + "@noble/curves" "^1.1.0" + "@noble/hashes" "^1.3.1" + multiformats "^13.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.0" + +"@libp2p/crypto@^4.0.0", "@libp2p/crypto@^4.0.1", "@libp2p/crypto@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.2.tgz" + integrity sha512-zdFnnP2dA3X/xqRyJus+5rgCrp7JHFh+C8hA+DckXqp+ayiRMyLnKKPXmSzTKJSsIABMW2pcUFU+yCeDSgiSQQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@noble/curves" "^1.3.0" + "@noble/hashes" "^1.3.3" + asn1js "^3.0.5" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/dcutr@^1.0.1": + version "1.0.12" + resolved "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.0.12.tgz" + integrity sha512-2fpk2UUpcsVF/oiBymLMvbyBnR3Zma1cdv/HBMLNO2R0SpMYIHV9RmLJM4PVNyTaVGWul0NOQqBteRFfstTMmA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + +"@libp2p/identify@^1.0.1": + version "1.0.14" + resolved "https://registry.npmjs.org/@libp2p/identify/-/identify-1.0.14.tgz" + integrity sha512-615aa4TPtzxUNb24yzxyFdu5/x+3Ge2BD/Ob4RN1PnT+haFQqgbcT2RJfqbyvuo7gzxVEGamqh5uYaChqAQ4IA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-protobuf-stream "^1.1.2" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + wherearewe "^2.0.1" + +"@libp2p/interface-internal@^1.0.7", "@libp2p/interface-internal@^1.0.8": + version "1.0.8" + resolved "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.0.8.tgz" + integrity sha512-NkUBnqzAAWDcg9n4uUtEpbtHg0gZjLhdBTwqJWkWuTujaCEz0xk5FfXBXgWqGEMIZAN73VX8/hLQCeigk3gUlg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@multiformats/multiaddr" "^12.1.14" + uint8arraylist "^2.4.8" + +"@libp2p/interface@^0.1.2", "@libp2p/interface@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz" + integrity sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag== + dependencies: + "@multiformats/multiaddr" "^12.1.5" + abortable-iterator "^5.0.1" + it-pushable "^3.2.0" + it-stream-types "^2.0.1" + multiformats "^12.0.1" + p-defer "^4.0.0" + race-signal "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface@^1.0.0", "@libp2p/interface@^1.1.0", "@libp2p/interface@^1.1.1", "@libp2p/interface@^1.1.2", "@libp2p/interface@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@libp2p/interface/-/interface-1.1.3.tgz" + integrity sha512-id22Ve5acg6CM0jjL8s9cyEaBYWn7z1R+1gy75RpHi0qgW15ifozwi0oFSTGLVA5XzRnNzioDLj+ZP6QwvhIVQ== + dependencies: + "@multiformats/multiaddr" "^12.1.14" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/kad-dht@^12.0.2": + version "12.0.7" + resolved "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.0.7.tgz" + integrity sha512-VmjTkUwLEsvev5Ld3LkHZCFoGhuPpyWjlkUomNj7eRAemsHM47fbr7O5fi7bObpEzlpwsbipA8cDLsdRe+9QDQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + any-signal "^4.1.1" + hashlru "^2.3.0" + interface-datastore "^8.2.10" + it-drain "^3.0.5" + it-length "^3.0.4" + it-length-prefixed "^9.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-parallel "^3.0.6" + it-pipe "^3.0.1" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-take "^3.0.4" + multiformats "^13.0.1" + p-defer "^4.0.0" + p-event "^6.0.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/keychain@^4.0.2": + version "4.0.8" + resolved "https://registry.npmjs.org/@libp2p/keychain/-/keychain-4.0.8.tgz" + integrity sha512-u4HD+HxfJTfW7G5+4NNsyIE8Cyex/XOsp4EREfk3Twhm7RgUdngFBMxwGxgR3XmWNzvZRknMzWJBXAXdW2azaw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + interface-datastore "^8.2.10" + merge-options "^3.0.4" + multiformats "^13.0.1" + sanitize-filename "^1.6.3" + uint8arrays "^5.0.1" + +"@libp2p/logger@^3.0.2": + version "3.1.0" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz" + integrity sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ== + dependencies: + "@libp2p/interface" "^0.1.6" + "@multiformats/multiaddr" "^12.1.5" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^12.0.1" + +"@libp2p/logger@^4.0.0", "@libp2p/logger@^4.0.1", "@libp2p/logger@^4.0.3", "@libp2p/logger@^4.0.4", "@libp2p/logger@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.6.tgz" + integrity sha512-ofTE3kDivBJnUSoX68nOeg1EuAnIE8oUjUnQnuKrxH+nh0JtjTcvwwIzjmm4nApwb4xj2dgPSDvU38Mjmu3TvA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@multiformats/multiaddr" "^12.1.14" + debug "^4.3.4" + interface-datastore "^8.2.10" + multiformats "^13.0.1" + +"@libp2p/mdns@^10.0.12", "@libp2p/mdns@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.0.15.tgz" + integrity sha512-06Vf0ok0t7mmtwxOGUvYA4LPkzmOPudIHcRNfBztfKy6Ya211pm3z4isM526yoYeneQaD7pQzA63x/Go3SELqA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + "@types/multicast-dns" "^7.2.4" + dns-packet "^5.6.1" + multicast-dns "^7.2.5" + +"@libp2p/mplex@^10.0.2": + version "10.0.15" + resolved "https://registry.npmjs.org/@libp2p/mplex/-/mplex-10.0.15.tgz" + integrity sha512-OnmWkK5cMW6qyuJ3SCWjM1FNs7ZBAlqASC0FrRNel+bV5AJHrqAjA1kkBrlPVPe5vbehWqdPpkHqT7CzlrxAtA== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/multistream-select@^5.1.3": + version "5.1.3" + resolved "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.3.tgz" + integrity sha512-vKD4FESYBHxLIL0gQ+WtUktsT3SrUBj2GFOESbexj98cTXquKcQUM6XTMrLRS8wWf77czZKpuKwwMxE+VsU2kw== + dependencies: + "@libp2p/interface" "^1.1.3" + it-length-prefixed "^9.0.4" + it-length-prefixed-stream "^1.1.6" + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.2" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-collections@^5.1.6": + version "5.1.6" + resolved "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.1.6.tgz" + integrity sha512-n2Oav1GehdEToeALvSytuYw2wiwzMvbOUxyAFUfF6oqmZgNe9P8cOkyr0w2P0p0hXjdcIeIfDYeTvY4MeHZnjw== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + +"@libp2p/peer-id-factory@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.0.6.tgz" + integrity sha512-dj5gdPvh3p4n4ltvZF508LA2hvC5COKP6BVFzcUBUy1yp81srSkX6QuV69W61pYfe5VxhVvyjhVkHIZ2l7wB7Q== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-id@^3.0.2", "@libp2p/peer-id@^3.0.3": + version "3.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz" + integrity sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw== + dependencies: + "@libp2p/interface" "^0.1.6" + multiformats "^12.0.1" + uint8arrays "^4.0.6" + +"@libp2p/peer-id@^4.0.0", "@libp2p/peer-id@^4.0.3", "@libp2p/peer-id@^4.0.5", "@libp2p/peer-id@^4.0.6": + version "4.0.6" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.6.tgz" + integrity sha512-hAj2bdN+s/cCkiaLthuL412DqLeYZ83yRmbjZfHHJ8d3sV/M7NAxu2v8Zx+3KurFF8ICMoD7bb34IXHo7FH3kw== + dependencies: + "@libp2p/interface" "^1.1.3" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +"@libp2p/peer-record@^7.0.9": + version "7.0.9" + resolved "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.9.tgz" + integrity sha512-uI5kE8K6/CWamxV9NK1p7mdYoWIf1AP+eWWZd+1opa/R7zT/QYmtAc/wWE7uFhfRsB736u9GkiPwU66LzA0reQ== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + protons-runtime "^5.4.0" + uint8-varint "^2.0.4" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/peer-store@^10.0.10": + version "10.0.10" + resolved "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.0.10.tgz" + integrity sha512-b5SUUtioxJMWaBPU2/UfS76q1DXkDmTkpTBogiKc5BTM6g5AqIA4wQXeiLB5EopxEUnSYSyeFxwdoeVDBkz19g== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-record" "^7.0.9" + "@multiformats/multiaddr" "^12.1.14" + interface-datastore "^8.2.10" + it-all "^3.0.4" + mortice "^3.0.4" + multiformats "^13.0.1" + protons-runtime "^5.4.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/ping@^1.0.1": + version "1.0.11" + resolved "https://registry.npmjs.org/@libp2p/ping/-/ping-1.0.11.tgz" + integrity sha512-aymP1dNDlYYVxhFk71df0M+3OWozZwIq5lev0Z9JJQrXzWLRLw9D2C3oDN9zfeBpVmBE0bnrb2h+fYGb2POXHw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@multiformats/multiaddr" "^12.1.14" + it-first "^3.0.4" + it-pipe "^3.0.1" + uint8arrays "^5.0.1" + +"@libp2p/pubsub@^9.0.8": + version "9.0.10" + resolved "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.10.tgz" + integrity sha512-oYvDM14NNXyFLnrVVQISrWZE1DZSOfHd7tQW/M+/Pl2iICsrMuj/ViZ8BFjGE2RkJflHXKGV5bdEqQNQMIoJ/g== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + it-length-prefixed "^9.0.4" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + multiformats "^13.0.1" + p-queue "^8.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/tcp@^9.0.12", "@libp2p/tcp@^9.0.2": + version "9.0.15" + resolved "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.0.15.tgz" + integrity sha512-q9huXxkvbiCXyRNVjS12ProBpnHUIKhaq+53UQGtvL/hN8KyD9lIOqziNbh8U3mfbaZZAbhxPOyhLKmbdxrsyQ== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@types/sinon" "^17.0.3" + stream-to-it "^0.2.4" + +"@libp2p/upnp-nat@^1.0.1": + version "1.0.13" + resolved "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.0.13.tgz" + integrity sha512-p2RjXu3Vc/kKdPDqxPtTea/ecLDy2tsJ+9njccOdw+FBeFrr2N+Aoge1dMzHXogWxGOrnyyjd04aAliiLPkENw== + dependencies: + "@achingbrain/nat-port-mapper" "^1.0.13" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + wherearewe "^2.0.1" + +"@libp2p/utils@^5.0.0", "@libp2p/utils@^5.2.0", "@libp2p/utils@^5.2.5": + version "5.2.5" + resolved "https://registry.npmjs.org/@libp2p/utils/-/utils-5.2.5.tgz" + integrity sha512-oMUrBvEFGD/74I3W3AhpV3pLx8CeEhxCpoJ9a0BTetoJ+TbU5DxxcWJGvhoq3RfQiUvZtg0IwJWNaiJ6lB2sdA== + dependencies: + "@chainsafe/is-ip" "^2.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/logger" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + delay "^6.0.0" + get-iterator "^2.0.1" + is-loopback-addr "^2.0.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + netmask "^2.0.2" + p-defer "^4.0.0" + race-event "^1.1.0" + race-signal "^1.0.2" + uint8arraylist "^2.4.8" + +"@libp2p/webrtc@^4.0.16", "@libp2p/webrtc@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-4.0.19.tgz" + integrity sha512-SeEvCkF2nExh5kTvzY8DzEAyeKP6F5oespBn8sfFFMJ0GEtrUxFgrFrT06suVFhkPSKIZ91wbiHxhV1JGO7t0Q== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + detect-browser "^5.3.0" + it-length-prefixed "^9.0.4" + it-protobuf-stream "^1.1.2" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + multihashes "^4.0.3" + node-datachannel "^0.5.3" + p-defer "^4.0.0" + p-event "^6.0.0" + p-timeout "^6.1.2" + protons-runtime "^5.4.0" + race-signal "^1.0.2" + react-native-webrtc "^118.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@libp2p/websockets@^8.0.12", "@libp2p/websockets@^8.0.2": + version "8.0.15" + resolved "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.0.15.tgz" + integrity sha512-TNhMrhdf+/sUam8SxpmUcoNxXlwq2F6YipdwBYo54HioFS1XIrR7VRqrhJot+Xz20JXV+k3IFMmBrg1Y/8vvBg== + dependencies: + "@libp2p/interface" "^1.1.3" + "@libp2p/utils" "^5.2.5" + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-to-uri" "^10.0.1" + "@types/ws" "^8.5.10" + it-ws "^6.1.1" + p-defer "^4.0.0" + wherearewe "^2.0.1" + ws "^8.16.0" + +"@libp2p/webtransport@^4.0.3": + version "4.0.19" + resolved "https://registry.npmjs.org/@libp2p/webtransport/-/webtransport-4.0.19.tgz" + integrity sha512-AOA3p3PfGYYxgSaVFfbagyWb5yRZMQD32XtG2D/NkMunOmBG1ZoZsbzRJeLLL+4FT7BMdwMlMYRwfSGm2txwvA== + dependencies: + "@chainsafe/libp2p-noise" "^15.0.0" + "@libp2p/interface" "^1.1.3" + "@libp2p/peer-id" "^4.0.6" + "@multiformats/multiaddr" "^12.1.14" + "@multiformats/multiaddr-matcher" "^1.1.2" + it-stream-types "^2.0.1" + multiformats "^13.0.1" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@multiformats/mafmt@^12.1.6": + version "12.1.6" + resolved "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz" + integrity sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr-matcher@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.1.2.tgz" + integrity sha512-O7hO+TYsweMjNCqTYKYn8iki2GXA46mxmgqnsOb2Wpr6ca4dRGnPldWTai2WwTeZpQyRJ/7GE+N9zPTfP0xE+Q== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@multiformats/multiaddr" "^12.0.0" + multiformats "^13.0.0" + +"@multiformats/multiaddr-to-uri@^10.0.1": + version "10.0.1" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.0.1.tgz" + integrity sha512-RtOBRJucMCzINPytvt1y7tJ2jr4aSKJmv3DF7/C515RJO9+nu9sZHdsk9vn251OtN8k21rAGlIHESt/BSJWAnQ== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.0", "@multiformats/multiaddr@^12.1.14", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.1.5": + version "12.1.14" + resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.14.tgz" + integrity sha512-1C0Mo73chzu7pTzTquuKs5vUtw70jhqg1i6pUNznGb0WV6RFa6vyB+D697Os5+cLx+DiItrAY6VzMtlGQsMzYg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + dns-over-http-resolver "^3.0.2" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + +"@noble/curves@^1.1.0", "@noble/curves@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/hashes@^1.3.1", "@noble/hashes@^1.3.3", "@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@orbitdb/core@^2.0.1": + version "2.1.0" + resolved "https://registry.npmjs.org/@orbitdb/core/-/core-2.1.0.tgz" + integrity sha512-IjNPZrvZrFCoALF6owbWpdwn3rO6ekkurSA1Ccp5p2sgatJa3j2yCXN0qJpr6pistqwc9tZSKYsYmGUQ2bkEUw== + dependencies: + "@ipld/dag-cbor" "^9.0.6" + "@libp2p/crypto" "^3.0.2" + it-pipe "^3.0.1" + level "^8.0.0" + lru "^3.1.0" + multiformats "^12.1.3" + p-queue "^8.0.1" + timeout-abort-controller "^3.0.0" + uint8arrays "^5.0.0" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@react-native-community/cli-clean@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz" + integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + +"@react-native-community/cli-config@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.6.tgz" + integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz" + integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz" + integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== + dependencies: + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz" + integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== + dependencies: + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz" + integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.2.4" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-ios@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz" + integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-plugin-metro@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz" + integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== + +"@react-native-community/cli-server-api@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz" + integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== + dependencies: + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz" + integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.6.tgz" + integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@12.3.6": + version "12.3.6" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.6.tgz" + integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== + dependencies: + "@react-native-community/cli-clean" "12.3.6" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-doctor" "12.3.6" + "@react-native-community/cli-hermes" "12.3.6" + "@react-native-community/cli-plugin-metro" "12.3.6" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-types" "12.3.6" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== + +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.17": + version "0.73.17" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz" + integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native/dev-middleware" "0.73.8" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" + +"@react-native/normalize-colors@^0.73.0", "@react-native/normalize-colors@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== + +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@types/dns-packet@*": + version "5.6.5" + resolved "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/multicast-dns@^7.2.4": + version "7.2.4" + resolved "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz" + integrity sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw== + dependencies: + "@types/dns-packet" "*" + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "20.11.20" + resolved "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== + dependencies: + undici-types "~5.26.4" + +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/sinon@^17.0.3": + version "17.0.3" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz" + integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.5" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/ws@^8.2.2", "@types/ws@^8.5.10": + version "8.5.10" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@vascosantos/moving-average@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz" + integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortable-iterator@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-5.0.1.tgz" + integrity sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^2.0.1" + +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-signal@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.10" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz" + integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.1" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz" + integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1, base64-js@^1.5.1, base64-js@1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blockstore-core@^4.0.0: + version "4.4.0" + resolved "https://registry.npmjs.org/blockstore-core/-/blockstore-core-4.4.0.tgz" + integrity sha512-tjOJAJMPWlqahqCjn5awLJz2eZeJnrGOBA0OInBFK69/FfPZbSID2t7s5jFcBRhGaglca56BzG4t5XOV3MPxOQ== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-merge "^3.0.3" + it-pushable "^3.2.3" + multiformats "^13.0.1" + +blockstore-level@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/blockstore-level/-/blockstore-level-1.1.8.tgz" + integrity sha512-8+NLeoyAQZzWIf9TWl0kC3x0JpJf6bts02K1fg8MCxgx/z/Leh4gVCzSGvYDuorHicOCVsyWv4+3ldlrnzRXoA== + dependencies: + blockstore-core "^4.0.0" + interface-blockstore "^5.0.0" + interface-store "^5.0.0" + level "^8.0.1" + multiformats "^13.0.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-readablestream-to-it@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.5.tgz" + integrity sha512-obLCT9jnxAeZlbaRWluUiZrcSJEoi2JkM0eoiJqlIP7MFwZwZjcB6giZvD343PXfr96ilD91M/wFqFvyAZq+Gg== + +browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0": + version "4.23.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +bson@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz" + integrity sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001587: + version "1.0.30001605" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz" + integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cborg@^4.0.0, cborg@^4.0.1, cborg@^4.0.3: + version "4.0.9" + resolved "https://registry.npmjs.org/cborg/-/cborg-4.0.9.tgz" + integrity sha512-xAuZbCDUOZxCe/ZJuIrnlG1Bk1R0qhwCXdnPYxVmqBSqm9M3BeE3G6Qoj5Zq+8epas36bT3vjiInDTJ6BVH6Rg== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.36.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz" + integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + dependencies: + browserslist "^4.23.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +datastore-core@^9.0.0, datastore-core@^9.2.7: + version "9.2.8" + resolved "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.8.tgz" + integrity sha512-+S3rI6FSQphrGQZraYcCLeaVzCpDkNBYBk9a8QU8Kt+7xPAphNVA6a37kc6K9CQBppVOOmRaPBKU19fhHJLszg== + dependencies: + "@libp2p/logger" "^4.0.6" + err-code "^3.0.1" + interface-datastore "^8.0.0" + interface-store "^5.0.0" + it-drain "^3.0.5" + it-filter "^3.0.4" + it-map "^3.0.5" + it-merge "^3.0.3" + it-pipe "^3.0.1" + it-pushable "^3.2.3" + it-sort "^3.0.4" + it-take "^3.0.4" + +dayjs@^1.8.15: + version "1.11.10" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz" + integrity sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg== + dependencies: + execa "^7.1.1" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +delay@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz" + integrity sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== + dependencies: + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +dns-over-http-resolver@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.2.tgz" + integrity sha512-5batkHOjCkuAfrFa+IPmt3jyeZqLtSMfAo1HQp3hfwtzgUwHooecTFplnYC093u5oRNL4CQHCXh3OfER7+vWrA== + dependencies: + debug "^4.3.4" + receptacle "^1.3.2" + +dns-packet@^5.2.2, dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.668: + version "1.4.728" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz" + integrity sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +envinfo@^7.10.0: + version "7.11.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz" + integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +event-target-shim@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz" + integrity sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: + version "4.3.6" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz" + integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== + dependencies: + strnum "^1.0.5" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@^0.206.0, flow-parser@0.*: + version "0.206.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz" + integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== + +freeport-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz" + integrity sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-iterator@^2.0.0, get-iterator@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz" + integrity sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob@^7.1.1, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +helia@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/helia/-/helia-3.0.1.tgz" + integrity sha512-Uf9h2RQuiyZxQkBXmbV9HF9/ILSWellXDuSk9Qwn+hRwtlIuEmaHW2HIRHXoaUF9A+WBPplLmiShaYtbaOgbMQ== + dependencies: + "@chainsafe/libp2p-gossipsub" "^11.0.0" + "@chainsafe/libp2p-noise" "^14.0.0" + "@chainsafe/libp2p-yamux" "^6.0.1" + "@helia/block-brokers" "~1.0.0" + "@helia/delegated-routing-v1-http-api-client" "^1.1.0" + "@helia/interface" "^3.0.1" + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.1" + "@ipld/dag-pb" "^4.0.3" + "@libp2p/autonat" "^1.0.1" + "@libp2p/bootstrap" "^10.0.2" + "@libp2p/circuit-relay-v2" "^1.0.2" + "@libp2p/dcutr" "^1.0.1" + "@libp2p/identify" "^1.0.1" + "@libp2p/interface" "^1.1.1" + "@libp2p/kad-dht" "^12.0.2" + "@libp2p/keychain" "^4.0.2" + "@libp2p/logger" "^4.0.4" + "@libp2p/mdns" "^10.0.2" + "@libp2p/mplex" "^10.0.2" + "@libp2p/ping" "^1.0.1" + "@libp2p/tcp" "^9.0.2" + "@libp2p/upnp-nat" "^1.0.1" + "@libp2p/utils" "^5.2.0" + "@libp2p/webrtc" "^4.0.3" + "@libp2p/websockets" "^8.0.2" + "@libp2p/webtransport" "^4.0.3" + blockstore-core "^4.0.0" + cborg "^4.0.3" + datastore-core "^9.0.0" + interface-blockstore "^5.2.7" + interface-datastore "^8.2.2" + interface-store "^5.1.5" + ipns "^8.0.0" + it-drain "^3.0.5" + libp2p "^1.0.3" + mortice "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + uint8arrays "^5.0.1" + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz" + integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.20.1: + version "0.20.1" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz" + integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== + dependencies: + hermes-estree "0.20.1" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interface-blockstore@^5.0.0, interface-blockstore@^5.2.7: + version "5.2.10" + resolved "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.10.tgz" + integrity sha512-9K48hTvBCGsKVD3pF4ILgDcf+W2P/gq0oxLcsHGB6E6W6nDutYkzR+7k7bCs9REHrBEfKzcVDEKieiuNM9WRZg== + dependencies: + interface-store "^5.0.0" + multiformats "^13.0.1" + +interface-datastore@^8.0.0, interface-datastore@^8.1.0, interface-datastore@^8.2.0, interface-datastore@^8.2.10, interface-datastore@^8.2.2: + version "8.2.11" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.11.tgz" + integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.2" + +interface-store@^5.0.0, interface-store@^5.1.0, interface-store@^5.1.5: + version "5.1.8" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== + +ipaddr.js@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +ipfs-bitswap@^20.0.0: + version "20.0.2" + resolved "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-20.0.2.tgz" + integrity sha512-B/pPf0Dvnp/TzZ/jk7IElxCH+MwxTCe8YvyQzsQ4i8RhUh0IwyyaHPy0LSVGuJpADNjaaZQffe6DSxwmRKF7uA== + dependencies: + "@libp2p/interface" "^1.0.0" + "@libp2p/logger" "^4.0.0" + "@libp2p/utils" "^5.0.0" + "@multiformats/multiaddr" "^12.1.0" + "@vascosantos/moving-average" "^1.1.0" + any-signal "^4.1.1" + events "^3.3.0" + interface-blockstore "^5.0.0" + interface-store "^5.1.0" + it-drain "^3.0.5" + it-foreach "^2.0.2" + it-length-prefixed "^9.0.0" + it-map "^3.0.2" + it-pipe "^3.0.1" + it-take "^3.0.1" + just-debounce-it "^3.0.1" + multiformats "^13.0.0" + progress-events "^1.0.0" + protons-runtime "^5.0.0" + timeout-abort-controller "^3.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + varint "^6.0.0" + varint-decoder "^1.0.0" + +ipns@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/ipns/-/ipns-7.0.2.tgz" + integrity sha512-jsrIgsCmFZL/kATuO+4N5Oy3b4xhnO42N39nCLyhhC8NM+SZIxTmZmUSDU0GoI8Vn0X/Zy2Sj3Lxbhg3UlVMUA== + dependencies: + "@libp2p/crypto" "^2.0.3" + "@libp2p/interface" "^0.1.2" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.2" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^12.0.1" + protons-runtime "^5.0.0" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +ipns@^8.0.0: + version "8.0.4" + resolved "https://registry.npmjs.org/ipns/-/ipns-8.0.4.tgz" + integrity sha512-iBrlCBm5fsMJW0BvVNwXLOadsyeTc9fz9PJAxJ3YggXgrx5T6lfRgVfTQsnYeByRADGfpWGOvW6zqnu8a3dcYw== + dependencies: + "@libp2p/crypto" "^4.0.0" + "@libp2p/interface" "^1.1.0" + "@libp2p/logger" "^4.0.3" + "@libp2p/peer-id" "^4.0.3" + cborg "^4.0.1" + err-code "^3.0.1" + interface-datastore "^8.1.0" + multiformats "^13.0.0" + protons-runtime "^5.2.1" + timestamp-nano "^1.0.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.0.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-loopback-addr@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz" + integrity sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg== + +is-network-error@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz" + integrity sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +it-all@^3.0.0, it-all@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz" + integrity sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ== + +it-byte-stream@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.8.tgz" + integrity sha512-H32LbN6kdX8HXqH68z5uivfkVYJEi5tIPRwIQNR5Qsx3uoDRhYdBRHzf3NOVAf6vqulFUSQLuU+Y0rs/QeWn3A== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + race-signal "^1.0.1" + uint8arraylist "^2.4.1" + +it-drain@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz" + integrity sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA== + +it-filter@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz" + integrity sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g== + dependencies: + it-peekable "^3.0.0" + +it-first@^3.0.1, it-first@^3.0.3, it-first@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-first/-/it-first-3.0.4.tgz" + integrity sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg== + +it-foreach@^2.0.2, it-foreach@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-foreach/-/it-foreach-2.0.6.tgz" + integrity sha512-OVosBHJsdXpAyeFlCbe3IGZia+65UykyAznakNsKXK+b99dbhuu/mOnXxTadDEo1GWhKx+WA8RNanKkMf07zQw== + dependencies: + it-peekable "^3.0.0" + +it-length-prefixed-stream@^1.0.0, it-length-prefixed-stream@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.6.tgz" + integrity sha512-MEby4r8n3XIYXjaWT3DweCuhBPQmFVT8RdI1BNjYQ5gelbFD3NLdjYpTI3TVmSEs/aJfgpfVFZzy6iP7OCxIgw== + dependencies: + it-byte-stream "^1.0.0" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.4.1" + +it-length-prefixed@^9.0.0, it-length-prefixed@^9.0.1, it-length-prefixed@^9.0.4: + version "9.0.4" + resolved "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.0.4.tgz" + integrity sha512-lz28fykbG0jq7s5XtvlzGxO5BeSOw6ikymkRllxjL21V5VKLcvB4pHr9wPvEnsAJ2et1xpOk3BRTMq9XrhgKsg== + dependencies: + err-code "^3.0.1" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^5.0.1" + +it-length@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-length/-/it-length-3.0.4.tgz" + integrity sha512-RS3thYkvqtWksrV7SaAnTv+pgY7ozpS17HlRvWvcnoRjVyNJMuffdCkIKpKNPTq5uZw9zVnkVKLO077pJn5Yhg== + +it-map@^3.0.2, it-map@^3.0.4, it-map@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz" + integrity sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w== + dependencies: + it-peekable "^3.0.0" + +it-merge@^3.0.0, it-merge@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz" + integrity sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA== + dependencies: + it-pushable "^3.2.0" + +it-ndjson@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/it-ndjson/-/it-ndjson-1.0.5.tgz" + integrity sha512-2UEROCo458dDu9dABKb9fvD34p2YL6SqV5EOXN8SysX2Fpx0MSN69EiBmLLDDYSpQlrW0I5j3Tm8DtEIL5NsIw== + +it-pair@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz" + integrity sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + +it-parallel@^3.0.6: + version "3.0.6" + resolved "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.6.tgz" + integrity sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A== + dependencies: + p-defer "^4.0.0" + +it-peekable@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.3.tgz" + integrity sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w== + +it-pipe@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz" + integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== + dependencies: + it-merge "^3.0.0" + it-pushable "^3.1.2" + it-stream-types "^2.0.1" + +it-protobuf-stream@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.2.tgz" + integrity sha512-epZBuG+7cPaTxCR/Lf3ApshBdA9qfflGPQLfLLrp9VQ0w67Z2xo4H+SLLetav57/29oPtAXwVaoyemg99JOWzA== + dependencies: + it-length-prefixed-stream "^1.0.0" + it-stream-types "^2.0.1" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.1" + +it-pushable@^3.1.2, it-pushable@^3.2.0, it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + +it-reader@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz" + integrity sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg== + dependencies: + it-stream-types "^2.0.1" + uint8arraylist "^2.0.0" + +it-sort@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-sort/-/it-sort-3.0.4.tgz" + integrity sha512-tvnC93JZZWjX4UxALy0asow0dzXabkoaRbrPJKClTKhNCqw4gzHr+H5axf1gohcthedRRkqd/ae+wl7WqoxFhw== + dependencies: + it-all "^3.0.0" + +it-stream-types@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz" + integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== + +it-take@^3.0.1, it-take@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz" + integrity sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA== + +it-ws@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/it-ws/-/it-ws-6.1.1.tgz" + integrity sha512-oyk4eCeZto2lzWDnJOa3j1S2M+VOGKUh8isEf94ySoaL6IFlyie0T4P9E0ZUaIvX8LyJxYFHFKCt8Zk7Sm/XPQ== + dependencies: + "@types/ws" "^8.2.2" + event-iterator "^2.0.0" + it-stream-types "^2.0.1" + uint8arrays "^5.0.0" + ws "^8.4.0" + +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.2.1: + version "17.12.3" + resolved "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz" + integrity sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +just-debounce-it@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz" + integrity sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0, level@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/level/-/level-8.0.1.tgz" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +libp2p@^1.0.3, libp2p@^1.2.0: + version "1.2.3" + resolved "https://registry.npmjs.org/libp2p/-/libp2p-1.2.3.tgz" + integrity sha512-eBPPliHno1pmMWfi+YR40YKc+XBvhiC3G583xy0dTCG3X+a+r8DpSEyd72dwPvyohY4k58MDcdi6zwjTRHnTIw== + dependencies: + "@libp2p/crypto" "^4.0.2" + "@libp2p/interface" "^1.1.3" + "@libp2p/interface-internal" "^1.0.8" + "@libp2p/logger" "^4.0.6" + "@libp2p/multistream-select" "^5.1.3" + "@libp2p/peer-collections" "^5.1.6" + "@libp2p/peer-id" "^4.0.6" + "@libp2p/peer-id-factory" "^4.0.6" + "@libp2p/peer-store" "^10.0.10" + "@libp2p/utils" "^5.2.5" + "@multiformats/multiaddr" "^12.1.14" + any-signal "^4.1.1" + datastore-core "^9.2.7" + interface-datastore "^8.2.10" + it-merge "^3.0.3" + it-parallel "^3.0.6" + merge-options "^3.0.4" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz" + integrity sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ== + dependencies: + inherits "^2.0.1" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-transformer@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.8.tgz" + integrity sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.20.1" + nullthrows "^1.1.1" + +metro-cache-key@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.8.tgz" + integrity sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA== + +metro-cache@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.8.tgz" + integrity sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ== + dependencies: + metro-core "0.80.8" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.8.tgz" + integrity sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.8" + metro-cache "0.80.8" + metro-core "0.80.8" + metro-runtime "0.80.8" + +metro-core@^0.80.3, metro-core@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.8.tgz" + integrity sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.8" + +metro-file-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.8.tgz" + integrity sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.8.tgz" + integrity sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.8.tgz" + integrity sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ== + +metro-runtime@^0.80.3, metro-runtime@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.8.tgz" + integrity sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.8.tgz" + integrity sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.8" + nullthrows "^1.1.1" + ob1 "0.80.8" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.8.tgz" + integrity sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.8" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.8.tgz" + integrity sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.8.tgz" + integrity sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.8" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-minify-terser "0.80.8" + metro-source-map "0.80.8" + metro-transform-plugins "0.80.8" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.8.tgz" + integrity sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.20.1" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.8" + metro-cache "0.80.8" + metro-cache-key "0.80.8" + metro-config "0.80.8" + metro-core "0.80.8" + metro-file-map "0.80.8" + metro-resolver "0.80.8" + metro-runtime "0.80.8" + metro-source-map "0.80.8" + metro-symbolicate "0.80.8" + metro-transform-plugins "0.80.8" + metro-transform-worker "0.80.8" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +mortice@^3.0.1, mortice@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz" + integrity sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ== + dependencies: + observable-webworkers "^2.0.1" + p-queue "^8.0.1" + p-timeout "^6.0.0" + +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +multiformats@^12.0.1, multiformats@^12.1.1: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^12.1.3: + version "12.1.3" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.0.1, multiformats@^13.1.0: + version "13.1.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz" + integrity sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ== + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abi@^3.3.0: + version "3.56.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz" + integrity sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q== + dependencies: + semver "^7.3.5" + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-datachannel@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.5.3.tgz" + integrity sha512-aOp+6P2TC6+u36L06yeUAYpBp5FqpDGjIbIJQvC5AY9HX9ZVoqUO3ysLlswnpQRM7wJt8LhBuHxiPkLoM5xEUA== + dependencies: + node-domexception "^2.0.1" + prebuild-install "^7.0.1" + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.1.tgz" + integrity sha512-M85rnSC7WQ7wnfQTARPT4LrK7nwCHLdDFOCcItZMhTQjyCebJH8GciKqYJNgaOFZs9nFmTmd/VMyi3OW5jA47w== + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.8.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.80.8: + version "0.80.8" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.8.tgz" + integrity sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +observable-webworkers@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz" + integrity sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-defer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz" + integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== + +p-event@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-6.0.0.tgz" + integrity sha512-Xbfxd0CfZmHLGKXH32k1JKjQYX6Rkv0UtQdaFJ8OyNcf+c0oWCeXHc1C4CX/IESZLmcvfPa5aFIO/vCr5gqtag== + dependencies: + p-timeout "^6.1.2" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-queue@^7.3.4: + version "7.4.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + +p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== + dependencies: + "@types/retry" "0.12.2" + is-network-error "^1.0.0" + retry "^0.13.1" + +p-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + +p-timeout@^6.0.0, p-timeout@^6.1.1, p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +prebuild-install@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +private-ip@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/private-ip/-/private-ip-3.0.2.tgz" + integrity sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + ip-regex "^5.0.0" + ipaddr.js "^2.1.0" + netmask "^2.0.2" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress-events@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/progress-events/-/progress-events-1.0.0.tgz" + integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^7.2.6: + version "7.2.6" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protons-runtime@^5.0.0, protons-runtime@^5.2.1, protons-runtime@^5.4.0: + version "5.4.0" + resolved "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz" + integrity sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pvtsutils@^1.3.2: + version "1.3.5" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +race-event@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/race-event/-/race-event-1.2.0.tgz" + integrity sha512-7EvAjTu9uuKa03Jky8yfSy6/SnnMTh6nouNmdeWv9b0dT8eDZC5ylx30cOR9YO9otQorVjjkIuSHQ5Ml/bKwMw== + +race-signal@^1.0.0, race-signal@^1.0.1, race-signal@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/race-signal/-/race-signal-1.0.2.tgz" + integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-devtools-core@^4.27.7: + version "4.28.5" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz" + integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-native-webrtc@^118.0.1: + version "118.0.1" + resolved "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-118.0.1.tgz" + integrity sha512-gjbBIV/0VyplavbOsQw9mpVJ4WHTEYZzi4PN7Oz18p2Ucsc5yEVUhtN5NQep8w6VDH1DNzuXXBPq5uJq9uqbMA== + dependencies: + base64-js "1.5.1" + debug "4.3.4" + event-target-shim "6.0.2" + +react-native@*, react-native@>=0.60.0: + version "0.73.6" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.73.6.tgz" + integrity sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.17" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +"react@^16.0.0 || ^17.0.0 || ^18.0.0", react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sax@>=0.6.0: + version "1.3.0" + resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5, semver@^7.5.2: + version "7.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map-support@^0.5.16, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-to-it@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^5.0.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terser@^5.15.0: + version "5.30.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz" + integrity sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + +timestamp-nano@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/timestamp-nano/-/timestamp-nano-1.0.1.tgz" + integrity sha512-4oGOVZWTu5sl89PtCDnhQBSt7/vL1zVEwAfxH1p49JhTosxzVQWYBYFRFZ8nJmo0G6f824iyP/44BFAwIoKvIA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +tslib@^2.0.1, tslib@^2.4.0, tslib@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +uint8-varint@^2.0.1, uint8-varint@^2.0.2, uint8-varint@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.4.1, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.8.tgz" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^4.0.6: + version "4.0.10" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.2.tgz" + integrity sha512-S0GaeR+orZt7LaqzTRs4ZP8QqzAauJ+0d4xvP2lJTA99jIkKsE2FgDs4tGF/K/z5O9I/2W5Yvrh7IuqNeYH+0Q== + dependencies: + multiformats "^13.0.0" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +varint-decoder@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/varint-decoder/-/varint-decoder-1.0.0.tgz" + integrity sha512-JkOvdztASWGUAsXshCFHrB9f6AgR2Q8W08CEyJ+43b1qtFocmI8Sp1R/M0E/hDOY2FzVIqk63tOYLgDYWuJ7IQ== + dependencies: + varint "^5.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.0.0: + version "3.6.20" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/wherearewe/-/wherearewe-2.0.1.tgz" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.0" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^7.5.1: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.16.0, ws@^8.4.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xml2js@^0.6.0, xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1: + version "2.4.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/package.json b/package.json index ee295c3..011297c 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,17 @@ "dependencies": { "@aws-sdk/client-s3": "^3.315.0", "@aws-sdk/lib-storage": "^3.315.0", + "@chainsafe/libp2p-gossipsub": "^13.0.0", + "@orbitdb/core": "^2.1.0", + "@orbitdb/quickstart": "^1.0.0", "commander": "^11.0.0", "crypto": "^1.0.1", "deasync": "^0.1.29", "debug": "^4.3.4", + "helia": "^4.1.0", "ipfs-cluster-api": "^0.0.9", "is-stream": "^3.0.0", + "nodejs": "^0.0.0", "prompt-sync": "^4.2.0", "prompt-sync-history": "^1.0.1", "shutil": "^0.0.1", diff --git a/scraper.js b/scraper.js index fb014ed..662370a 100644 --- a/scraper.js +++ b/scraper.js @@ -1,8 +1,12 @@ import * as huggingface_scraper from './huggingface_scraper/main.js'; - -let local_model_path = "" -let collection_path = "" - +import * as path from 'path'; +import * as process from 'process'; +let local_model_path +let collection_path +let ipfs_path +let uid +let operating_system +// detect operating sysem let s3_bucket = "" let s3_secret_key = "" let s3_access_key = "" @@ -41,17 +45,50 @@ let hf_creds = { "org_name": hf_org_name } + +if (process.platform === 'win32') { + operating_system = 'windows' +} else if (process.platform === 'linux') { + operating_system = 'linux' +} else if (process.platform === 'darwin') { + operating_system = 'mac' +} else { + operating_system = 'unknown' +} + +// detect if user is admin +if (process.getuid && process.getuid() === 0) { + uid = 'root' +} else { + // grab username + uid = process.env.USER +} + +if (operating_system == 'linux' && uid == 'root') { + local_model_path = "/cloudkit-models/" + collection_path = "/cloudkit-models/collection.json" + ipfs_path = "/ipfs/" +} else if (operating_system == 'linux' && uid != 'root') { + local_model_path = path.join(process.env.HOME, ".cache/huggingface/") + collection_path = path.join(process.env.HOME, ".cache/huggingface/collection.json") + ipfs_path = path.join(process.env.HOME, ".cache/ipfs/") +} + + + process.env.mysql_creds = JSON.stringify(mysql_creds) process.env.s3_creds = JSON.stringify(s3_creds) process.env.hf_creds = JSON.stringify(hf_creds) process.env.local_model_path = local_model_path process.env.collection_path = collection_path +process.env.ipfs_path = ipfs_path const scraper = new huggingface_scraper.Scraper( s3_creds = s3_creds, hf_creds = hf_creds, mysql_creds = mysql_creds, local_model_path = local_model_path, + ipfs_path = ipfs_path, collection_path = collection_path );