diff --git a/.gitignore b/.gitignore index a7dbd0c..67a4ac0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,8 @@ /wandb /data /conda -/model.png \ No newline at end of file +/model.png +node_modules +ml-bot.json +config.yaml +ml-bot-store diff --git a/README.md b/README.md index 31edf76..596304f 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,6 @@ The current code base is fast moving. Expect to change rapidly. To train the model, you need to have a set of labeled data. This data is at `./input/MatrixData`. It is a TSV file. -Please note that URLs should not be added as well as newlines. -Newlines will be stripped anyway and URLs tend to break the model result. To train the model, run `python3 model_v2.py`. This will train the model and save it to `./model/`. Please make sure you installed tensorflow. diff --git a/bert.ipynb b/bert.ipynb index b6fdc78..337b081 100644 --- a/bert.ipynb +++ b/bert.ipynb @@ -2,59 +2,25 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-12-10 16:51:06.512818: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2022-12-10 16:51:06.619243: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "WARNING:tensorflow:Please fix your imports. Module tensorflow.python.training.tracking.data_structures has been moved to tensorflow.python.trackable.data_structures. The old module will be deleted in version 2.11.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-12-10 16:51:08.213715: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.217539: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.217978: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.218526: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2022-12-10 16:51:08.219226: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.219388: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.219528: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.626829: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.627024: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.627186: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n", - "2022-12-10 16:51:08.627323: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1616] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 4463 MB memory: -> device: 0, name: NVIDIA GeForce RTX 2080 SUPER, pci bus id: 0000:08:00.0, compute capability: 7.5\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model: \"model\"\n", + "Model: \"model_1\"\n", "__________________________________________________________________________________________________\n", " Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", " text (InputLayer) [(None,)] 0 [] \n", " \n", - " preprocessing (KerasLayer) {'input_mask': (Non 0 ['text[0][0]'] \n", - " e, 128), \n", + " preprocessing (KerasLayer) {'input_type_ids': 0 ['text[0][0]'] \n", + " (None, 128), \n", " 'input_word_ids': \n", " (None, 128), \n", - " 'input_type_ids': \n", - " (None, 128)} \n", + " 'input_mask': (Non \n", + " e, 128)} \n", " \n", " BERT_encoder (KerasLayer) {'sequence_output': 13548801 ['preprocessing[0][0]', \n", " (None, 128, 256), 'preprocessing[0][1]', \n", @@ -71,14 +37,14 @@ " (None, 128, 256), \n", " (None, 128, 256), \n", " (None, 128, 256)], \n", - " 'pooled_output': ( \n", - " None, 256), \n", " 'default': (None, \n", - " 256)} \n", + " 256), \n", + " 'pooled_output': ( \n", + " None, 256)} \n", " \n", - " dropout (Dropout) (None, 256) 0 ['BERT_encoder[0][13]'] \n", + " dropout_1 (Dropout) (None, 256) 0 ['BERT_encoder[0][13]'] \n", " \n", - " classifier (Dense) (None, 1) 257 ['dropout[0][0]'] \n", + " classifier (Dense) (None, 1) 257 ['dropout_1[0][0]'] \n", " \n", "==================================================================================================\n", "Total params: 13,549,058\n", @@ -86,110 +52,77 @@ "Non-trainable params: 1\n", "__________________________________________________________________________________________________\n", "Training model with https://tfhub.dev/google/electra_small/2\n", - "Epoch 1/50\n", - "42/42 [==============================] - 22s 254ms/step - loss: 0.6233 - binary_accuracy: 0.7166 - val_loss: 0.3777 - val_binary_accuracy: 0.8094\n", - "Epoch 2/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 0.2135 - binary_accuracy: 0.9190 - val_loss: 0.1298 - val_binary_accuracy: 0.9615\n", - "Epoch 3/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 0.0726 - binary_accuracy: 0.9715 - val_loss: 0.1039 - val_binary_accuracy: 0.9720\n", - "Epoch 4/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 0.0391 - binary_accuracy: 0.9858 - val_loss: 0.1421 - val_binary_accuracy: 0.9685\n", - "Epoch 5/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 0.0233 - binary_accuracy: 0.9933 - val_loss: 0.1572 - val_binary_accuracy: 0.9703\n", - "Epoch 6/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 0.0176 - binary_accuracy: 0.9910 - val_loss: 0.0614 - val_binary_accuracy: 0.9843\n", - "Epoch 7/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 0.0029 - binary_accuracy: 0.9993 - val_loss: 0.0675 - val_binary_accuracy: 0.9860\n", - "Epoch 8/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 0.0043 - binary_accuracy: 0.9985 - val_loss: 0.0694 - val_binary_accuracy: 0.9860\n", - "Epoch 9/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 8.5732e-04 - binary_accuracy: 1.0000 - val_loss: 0.0759 - val_binary_accuracy: 0.9843\n", - "Epoch 10/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 0.0014 - binary_accuracy: 0.9993 - val_loss: 0.0866 - val_binary_accuracy: 0.9860\n", - "Epoch 11/50\n", - "42/42 [==============================] - 10s 238ms/step - loss: 3.7205e-04 - binary_accuracy: 1.0000 - val_loss: 0.0820 - val_binary_accuracy: 0.9843\n", - "Epoch 12/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 2.6485e-04 - binary_accuracy: 1.0000 - val_loss: 0.0902 - val_binary_accuracy: 0.9843\n", - "Epoch 13/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 1.9019e-04 - binary_accuracy: 1.0000 - val_loss: 0.1003 - val_binary_accuracy: 0.9843\n", - "Epoch 14/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 1.7637e-04 - binary_accuracy: 1.0000 - val_loss: 0.1004 - val_binary_accuracy: 0.9843\n", - "Epoch 15/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 1.6374e-04 - binary_accuracy: 1.0000 - val_loss: 0.1018 - val_binary_accuracy: 0.9843\n", - "Epoch 16/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 1.3852e-04 - binary_accuracy: 1.0000 - val_loss: 0.1082 - val_binary_accuracy: 0.9808\n", - "Epoch 17/50\n", - "42/42 [==============================] - 10s 238ms/step - loss: 1.1150e-04 - binary_accuracy: 1.0000 - val_loss: 0.1099 - val_binary_accuracy: 0.9825\n", - "Epoch 18/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 1.0550e-04 - binary_accuracy: 1.0000 - val_loss: 0.1126 - val_binary_accuracy: 0.9808\n", - "Epoch 19/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 9.8560e-05 - binary_accuracy: 1.0000 - val_loss: 0.1117 - val_binary_accuracy: 0.9825\n", - "Epoch 20/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 2.8649e-04 - binary_accuracy: 1.0000 - val_loss: 0.1030 - val_binary_accuracy: 0.9808\n", - "Epoch 21/50\n", - "42/42 [==============================] - 10s 243ms/step - loss: 1.0976e-04 - binary_accuracy: 1.0000 - val_loss: 0.0909 - val_binary_accuracy: 0.9843\n", - "Epoch 22/50\n", - "42/42 [==============================] - 10s 242ms/step - loss: 1.1211e-04 - binary_accuracy: 1.0000 - val_loss: 0.1115 - val_binary_accuracy: 0.9825\n", - "Epoch 23/50\n", - "42/42 [==============================] - 10s 237ms/step - loss: 7.6401e-05 - binary_accuracy: 1.0000 - val_loss: 0.1225 - val_binary_accuracy: 0.9808\n", - "Epoch 24/50\n", - "42/42 [==============================] - 10s 230ms/step - loss: 7.7119e-05 - binary_accuracy: 1.0000 - val_loss: 0.1205 - val_binary_accuracy: 0.9808\n", - "Epoch 25/50\n", - "42/42 [==============================] - 10s 231ms/step - loss: 6.6323e-05 - binary_accuracy: 1.0000 - val_loss: 0.1215 - val_binary_accuracy: 0.9808\n", - "Epoch 26/50\n", - "42/42 [==============================] - 9s 227ms/step - loss: 6.6501e-05 - binary_accuracy: 1.0000 - val_loss: 0.1223 - val_binary_accuracy: 0.9808\n", - "Epoch 27/50\n", - "42/42 [==============================] - 9s 226ms/step - loss: 6.2443e-05 - binary_accuracy: 1.0000 - val_loss: 0.1284 - val_binary_accuracy: 0.9825\n", - "Epoch 28/50\n", - "42/42 [==============================] - 10s 232ms/step - loss: 6.8873e-05 - binary_accuracy: 1.0000 - val_loss: 0.1209 - val_binary_accuracy: 0.9808\n", - "Epoch 29/50\n", - "42/42 [==============================] - 10s 235ms/step - loss: 5.7817e-05 - binary_accuracy: 1.0000 - val_loss: 0.1201 - val_binary_accuracy: 0.9808\n", - "Epoch 30/50\n", - "42/42 [==============================] - 10s 234ms/step - loss: 6.2797e-05 - binary_accuracy: 1.0000 - val_loss: 0.1188 - val_binary_accuracy: 0.9808\n", - "Epoch 31/50\n", - "42/42 [==============================] - 10s 232ms/step - loss: 5.5777e-05 - binary_accuracy: 1.0000 - val_loss: 0.1165 - val_binary_accuracy: 0.9825\n", - "Epoch 32/50\n", - "42/42 [==============================] - 10s 234ms/step - loss: 5.4295e-05 - binary_accuracy: 1.0000 - val_loss: 0.1235 - val_binary_accuracy: 0.9808\n", - "Epoch 33/50\n", - "42/42 [==============================] - 10s 234ms/step - loss: 5.0356e-05 - binary_accuracy: 1.0000 - val_loss: 0.1228 - val_binary_accuracy: 0.9808\n", - "Epoch 34/50\n", - "42/42 [==============================] - 10s 235ms/step - loss: 4.6275e-05 - binary_accuracy: 1.0000 - val_loss: 0.1244 - val_binary_accuracy: 0.9808\n", - "Epoch 35/50\n", - "42/42 [==============================] - 10s 237ms/step - loss: 4.5953e-05 - binary_accuracy: 1.0000 - val_loss: 0.1258 - val_binary_accuracy: 0.9808\n", - "Epoch 36/50\n", - "42/42 [==============================] - 10s 233ms/step - loss: 4.3018e-05 - binary_accuracy: 1.0000 - val_loss: 0.1272 - val_binary_accuracy: 0.9808\n", - "Epoch 37/50\n", - "42/42 [==============================] - 10s 237ms/step - loss: 4.3228e-05 - binary_accuracy: 1.0000 - val_loss: 0.1282 - val_binary_accuracy: 0.9808\n", - "Epoch 38/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 4.2014e-05 - binary_accuracy: 1.0000 - val_loss: 0.1284 - val_binary_accuracy: 0.9808\n", - "Epoch 39/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 4.1043e-05 - binary_accuracy: 1.0000 - val_loss: 0.1283 - val_binary_accuracy: 0.9808\n", - "Epoch 40/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 4.7759e-05 - binary_accuracy: 1.0000 - val_loss: 0.1274 - val_binary_accuracy: 0.9808\n", - "Epoch 41/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 3.9910e-05 - binary_accuracy: 1.0000 - val_loss: 0.1296 - val_binary_accuracy: 0.9808\n", - "Epoch 42/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 4.3200e-05 - binary_accuracy: 1.0000 - val_loss: 0.1332 - val_binary_accuracy: 0.9808\n", - "Epoch 43/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 5.3371e-05 - binary_accuracy: 1.0000 - val_loss: 0.1274 - val_binary_accuracy: 0.9808\n", - "Epoch 44/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 3.8588e-05 - binary_accuracy: 1.0000 - val_loss: 0.1233 - val_binary_accuracy: 0.9825\n", - "Epoch 45/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 3.6566e-05 - binary_accuracy: 1.0000 - val_loss: 0.1243 - val_binary_accuracy: 0.9825\n", - "Epoch 46/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 3.6356e-05 - binary_accuracy: 1.0000 - val_loss: 0.1251 - val_binary_accuracy: 0.9825\n", - "Epoch 47/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 3.8864e-05 - binary_accuracy: 1.0000 - val_loss: 0.1251 - val_binary_accuracy: 0.9825\n", - "Epoch 48/50\n", - "42/42 [==============================] - 10s 239ms/step - loss: 3.6076e-05 - binary_accuracy: 1.0000 - val_loss: 0.1255 - val_binary_accuracy: 0.9825\n", - "Epoch 49/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 3.6211e-05 - binary_accuracy: 1.0000 - val_loss: 0.1257 - val_binary_accuracy: 0.9825\n", - "Epoch 50/50\n", - "42/42 [==============================] - 10s 240ms/step - loss: 3.4930e-05 - binary_accuracy: 1.0000 - val_loss: 0.1257 - val_binary_accuracy: 0.9825\n", - "18/18 [==============================] - 1s 64ms/step - loss: 0.1257 - binary_accuracy: 0.9825\n", - "Loss: 0.12571147084236145\n", - "Accuracy: 0.9825174808502197\n", - "dict_keys(['loss', 'binary_accuracy', 'val_loss', 'val_binary_accuracy'])\n" + "Epoch 1/34\n", + "42/42 [==============================] - 37s 255ms/step - loss: 0.5633 - binary_accuracy: 0.7036 - val_loss: 0.3529 - val_binary_accuracy: 0.8482\n", + "Epoch 2/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 0.2114 - binary_accuracy: 0.9289 - val_loss: 0.0842 - val_binary_accuracy: 0.9773\n", + "Epoch 3/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 0.0651 - binary_accuracy: 0.9813 - val_loss: 0.0626 - val_binary_accuracy: 0.9791\n", + "Epoch 4/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 0.0376 - binary_accuracy: 0.9903 - val_loss: 0.0551 - val_binary_accuracy: 0.9843\n", + "Epoch 5/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 0.0199 - binary_accuracy: 0.9948 - val_loss: 0.0757 - val_binary_accuracy: 0.9773\n", + "Epoch 6/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 0.0143 - binary_accuracy: 0.9970 - val_loss: 0.0709 - val_binary_accuracy: 0.9773\n", + "Epoch 7/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 0.0080 - binary_accuracy: 0.9978 - val_loss: 0.0553 - val_binary_accuracy: 0.9843\n", + "Epoch 8/34\n", + "42/42 [==============================] - 10s 239ms/step - loss: 0.0042 - binary_accuracy: 0.9993 - val_loss: 0.0608 - val_binary_accuracy: 0.9860\n", + "Epoch 9/34\n", + "42/42 [==============================] - 10s 244ms/step - loss: 0.0027 - binary_accuracy: 1.0000 - val_loss: 0.0617 - val_binary_accuracy: 0.9860\n", + "Epoch 10/34\n", + "42/42 [==============================] - 10s 239ms/step - loss: 0.0018 - binary_accuracy: 1.0000 - val_loss: 0.0679 - val_binary_accuracy: 0.9843\n", + "Epoch 11/34\n", + "42/42 [==============================] - 10s 239ms/step - loss: 0.0014 - binary_accuracy: 1.0000 - val_loss: 0.0721 - val_binary_accuracy: 0.9843\n", + "Epoch 12/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 0.0011 - binary_accuracy: 1.0000 - val_loss: 0.0772 - val_binary_accuracy: 0.9843\n", + "Epoch 13/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 0.0026 - binary_accuracy: 0.9993 - val_loss: 0.0946 - val_binary_accuracy: 0.9756\n", + "Epoch 14/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 0.0048 - binary_accuracy: 0.9985 - val_loss: 0.0864 - val_binary_accuracy: 0.9791\n", + "Epoch 15/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 0.0021 - binary_accuracy: 1.0000 - val_loss: 0.0864 - val_binary_accuracy: 0.9791\n", + "Epoch 16/34\n", + "42/42 [==============================] - 10s 238ms/step - loss: 0.0011 - binary_accuracy: 1.0000 - val_loss: 0.0792 - val_binary_accuracy: 0.9825\n", + "Epoch 17/34\n", + "42/42 [==============================] - 10s 232ms/step - loss: 8.2108e-04 - binary_accuracy: 1.0000 - val_loss: 0.0830 - val_binary_accuracy: 0.9808\n", + "Epoch 18/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 7.7923e-04 - binary_accuracy: 1.0000 - val_loss: 0.0829 - val_binary_accuracy: 0.9825\n", + "Epoch 19/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 6.6255e-04 - binary_accuracy: 1.0000 - val_loss: 0.0806 - val_binary_accuracy: 0.9843\n", + "Epoch 20/34\n", + "42/42 [==============================] - 10s 238ms/step - loss: 6.3440e-04 - binary_accuracy: 1.0000 - val_loss: 0.0848 - val_binary_accuracy: 0.9825\n", + "Epoch 21/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 5.3386e-04 - binary_accuracy: 1.0000 - val_loss: 0.0854 - val_binary_accuracy: 0.9825\n", + "Epoch 22/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 5.6435e-04 - binary_accuracy: 1.0000 - val_loss: 0.0874 - val_binary_accuracy: 0.9825\n", + "Epoch 23/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 5.6810e-04 - binary_accuracy: 1.0000 - val_loss: 0.0868 - val_binary_accuracy: 0.9825\n", + "Epoch 24/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 4.5731e-04 - binary_accuracy: 1.0000 - val_loss: 0.0867 - val_binary_accuracy: 0.9825\n", + "Epoch 25/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 4.4671e-04 - binary_accuracy: 1.0000 - val_loss: 0.0877 - val_binary_accuracy: 0.9825\n", + "Epoch 26/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 4.9401e-04 - binary_accuracy: 1.0000 - val_loss: 0.0900 - val_binary_accuracy: 0.9825\n", + "Epoch 27/34\n", + "42/42 [==============================] - 10s 238ms/step - loss: 3.6857e-04 - binary_accuracy: 1.0000 - val_loss: 0.0903 - val_binary_accuracy: 0.9825\n", + "Epoch 28/34\n", + "42/42 [==============================] - 10s 235ms/step - loss: 3.8106e-04 - binary_accuracy: 1.0000 - val_loss: 0.0905 - val_binary_accuracy: 0.9825\n", + "Epoch 29/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 3.7847e-04 - binary_accuracy: 1.0000 - val_loss: 0.0910 - val_binary_accuracy: 0.9825\n", + "Epoch 30/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 3.7153e-04 - binary_accuracy: 1.0000 - val_loss: 0.0911 - val_binary_accuracy: 0.9825\n", + "Epoch 31/34\n", + "42/42 [==============================] - 10s 237ms/step - loss: 3.4990e-04 - binary_accuracy: 1.0000 - val_loss: 0.0913 - val_binary_accuracy: 0.9825\n", + "Epoch 32/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 3.6358e-04 - binary_accuracy: 1.0000 - val_loss: 0.0911 - val_binary_accuracy: 0.9825\n", + "Epoch 33/34\n", + "42/42 [==============================] - 10s 236ms/step - loss: 3.5723e-04 - binary_accuracy: 1.0000 - val_loss: 0.0910 - val_binary_accuracy: 0.9825\n", + "Epoch 34/34\n", + "42/42 [==============================] - 10s 234ms/step - loss: 3.7230e-04 - binary_accuracy: 1.0000 - val_loss: 0.0915 - val_binary_accuracy: 0.9825\n", + "18/18 [==============================] - 1s 64ms/step - loss: 0.0915 - binary_accuracy: 0.9825\n", + "Loss: 0.09151919186115265\n", + "Accuracy: 0.9825479984283447\n" ] }, { @@ -203,14 +136,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "INFO:tensorflow:Assets written to: ./bert_models/1670687985.7670703/assets\n" + "INFO:tensorflow:Assets written to: ./bert_models/1670690385.641988/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:tensorflow:Assets written to: ./bert_models/1670687985.7670703/assets\n" + "INFO:tensorflow:Assets written to: ./bert_models/1670690385.641988/assets\n" ] }, { @@ -218,132 +151,142 @@ "output_type": "stream", "text": [ "Message: \"Greg, can you call me back once you get this?\"\n", - "Likeliness of spam in percentage: 0.000008\n", + "Likeliness of spam in percentage: 0.000258\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Congrats on your new iPhone! Click here to claim your prize...\"\n", - "Likeliness of spam in percentage: 0.001219\n", - "Vote by AI: Not Spam\n", - "Model failed to predict correctly\n", + "Likeliness of spam in percentage: 0.858939\n", + "Vote by AI: Spam\n", + "Model predicted correctly\n", "\n", "\n", "Message: \"Really like that new photo of you\"\n", - "Likeliness of spam in percentage: 0.002050\n", + "Likeliness of spam in percentage: 0.007752\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Did you hear the news today? Terrible what has happened...\"\n", - "Likeliness of spam in percentage: 0.000008\n", + "Likeliness of spam in percentage: 0.000284\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Attend this free COVID webinar today: Book your session now...\"\n", - "Likeliness of spam in percentage: 0.999917\n", + "Likeliness of spam in percentage: 0.998953\n", "Vote by AI: Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Are you coming to the party tonight?\"\n", - "Likeliness of spam in percentage: 0.055407\n", + "Likeliness of spam in percentage: 0.007384\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Your parcel has gone missing\"\n", - "Likeliness of spam in percentage: 0.000358\n", + "Likeliness of spam in percentage: 0.003767\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Do not forget to bring friends!\"\n", - "Likeliness of spam in percentage: 0.000066\n", + "Likeliness of spam in percentage: 0.000505\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"You have won a million dollars! Fill out your bank details here...\"\n", - "Likeliness of spam in percentage: 0.000235\n", - "Vote by AI: Not Spam\n", - "Model failed to predict correctly\n", + "Likeliness of spam in percentage: 0.947860\n", + "Vote by AI: Spam\n", + "Model predicted correctly\n", "\n", "\n", "Message: \"Looking forward to seeing you again\"\n", - "Likeliness of spam in percentage: 0.484317\n", + "Likeliness of spam in percentage: 0.152917\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"oh wow https://github.com/MGCodesandStats/tensorflow-nlp/blob/master/spam%20detection%20tensorflow%20v2.ipynb works really good on spam detection. Guess I go with that as the base model then lol :D\"\n", - "Likeliness of spam in percentage: 0.999941\n", + "Likeliness of spam in percentage: 0.999562\n", "Vote by AI: Spam\n", "Model failed to predict correctly\n", "\n", "\n", "Message: \"ayo\"\n", - "Likeliness of spam in percentage: 0.010082\n", + "Likeliness of spam in percentage: 0.027977\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Almost all my spam is coming to my non-gmail address actually\"\n", - "Likeliness of spam in percentage: 0.000035\n", + "Likeliness of spam in percentage: 0.057861\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"Oh neat I think I found the sizing sweetspot for my data :D\"\n", - "Likeliness of spam in percentage: 0.000008\n", + "Likeliness of spam in percentage: 0.000136\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"would never click on buttons in gmail :D always expecting there to be a bug in gmail that allows js to grab your google credentials :D XSS via email lol. I am too scared for touching spam in gmail\"\n", - "Likeliness of spam in percentage: 0.017660\n", + "Likeliness of spam in percentage: 0.212154\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"back to cacophony \"\n", - "Likeliness of spam in percentage: 0.975112\n", - "Vote by AI: Spam\n", - "Model failed to predict correctly\n", + "Likeliness of spam in percentage: 0.066419\n", + "Vote by AI: Not Spam\n", + "Model predicted correctly\n", "\n", "\n", "Message: \"Room version 11 when\"\n", - "Likeliness of spam in percentage: 0.993125\n", + "Likeliness of spam in percentage: 0.944931\n", "Vote by AI: Spam\n", "Model failed to predict correctly\n", "\n", "\n", "Message: \"skip 11 and go straight to 12\"\n", - "Likeliness of spam in percentage: 0.100031\n", + "Likeliness of spam in percentage: 0.006444\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"100 events should clear out any events that might be causing a request to fail lol\"\n", - "Likeliness of spam in percentage: 0.007106\n", + "Likeliness of spam in percentage: 0.019123\n", "Vote by AI: Not Spam\n", "Model predicted correctly\n", "\n", "\n", "Message: \"I'll help anyone interested on how to invest and earn $30k, $50k, $100k, $200k or more in just 72hours from the crypto market.But you will have to pay me my commission! when you receive your profit! if interested send me a direct message let's get started or via WhatsApp +1 (605) 953‑6801\"\n", - "Likeliness of spam in percentage: 0.999975\n", + "Likeliness of spam in percentage: 0.999778\n", "Vote by AI: Spam\n", "Model predicted correctly\n", "\n", "\n", - "15 out of 20 are detected correctly\n", + "18 out of 20 are detected correctly\n", "\n" ] }, { "data": { - "image/png": "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pwIAITk5ucz+np6eQkREhPrx+PHjBQDCH3/8oW67f/++4O3tLXh5eQkKhULjvbRq1UooKChQ77t48WIBgHDmzJky5yppzZo1GjHdunVLsLS0FJ5//nn1OQRBEJYtWyYAEFavXi0IgiCcOHFCACBs3ry53GN/9tlnAgDh9u3bFcZARFQTOCyQiMjIZDIZoqKiyrRbWVmp79+/fx+ZmZno3r078vLycOHChcceNzw8HA0bNlQ/7t69OwBxGNjjhISEwNfXV/24ffv2sLOzU79WoVBg7969GDBgANzd3dX7NW/eHH369Hns8QHN95ebm4vMzEx06dIFgiDgxIkTZfZ/9913NR53795d473s2rUL5ubm6p4sADAzM8OYMWN0iic8PBxFRUXYunWrum337t3IyspCeHi41riLiopw584dNG/eHA4ODjh+/LhO56pMzCXPm5+fj8zMTDz11FMAoPd5S56/c+fO6Natm7rNxsYGI0aMQEpKCv755x+N/aOiomBpaal+rM81VdLevXtRWFiI8ePHaxTYGD58OOzs7NTDEu3t7QGIQzPz8vK0HktVtOPHH380eLEQIqLHYXJFRGRkTZo00fjCqnLu3DkMHDgQ9vb2sLOzg7Ozs7oYRsn5JuVp1qyZxmNVonXv3j29X6t6veq1t27dwsOHD9G8efMy+2lr0yY1NRWRkZFo1KiReh7V008/DaDs+5PL5WWGtpWMBxDnQrm5ucHGxkZjv5YtW+oUj7+/P/z8/BAXF6dui4uLg5OTE5599ll128OHDzF9+nR4eHhAJpPByckJzs7OyMrK0unnUpI+Md+9exfjxo2Di4sLrKys4OzsDG9vbwC6XQ/lnV/buVQVLK9evarRXpVrqvR5gbLv09LSEj4+Purnvb29ER0dja+++gpOTk4IDQ3F8uXLNd5veHg4unbtirfffhsuLi4YPHgwNm3axESLiIyCc66IiIysZI+ESlZWFp5++mnY2dlh9uzZ8PX1hVwux/HjxzFp0iSdvjiamZlpbRcEwaCv1YVCocBzzz2Hu3fvYtKkSfDz80ODBg2QlpaGyMjIMu+vvHiqW3h4OD766CNkZmbC1tYWO3bswJAhQzQqKo4ZMwZr1qzB+PHjERwcDHt7e0gkEgwePNigX+hfffVVHDp0CB988AECAgJgY2MDpVKJ3r1711giYejrQpsFCxYg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5uYGmUyGJ554Art27aqhaKsZhwUSERERUTm8vLywaNEinfffv38/JBIJsrKyDBYTAKxduxYODg4GPYcpMvnkKi4uDtHR0ZgxYwaOHz8Of39/hIaG4tatW1r3LywsxHPPPYeUlBT88MMPSEpKwqpVq9CkSZMajryacFggERERUa0nkUgq3GbOnFmp4/71118YMWKEzvt36dIFN2/ehL29faXORxUz+WqBCxcuxPDhwxEVFQUAWLlyJX7++WesXr0akydPLrP/6tWrcffuXRw6dAgWFhYAxIy+IgUFBSgoKFA/zsnJqb43UFWqYYHp6UBBASCTGTceIiIiItLbzZs31ffj4uIwffp0JCUlqdtsbGzU9wVBgEKhgLn547+qOzs76xWHpaUlXF1d9XoN6c6ke64KCwtx7NgxhISEqNukUilCQkKQmJio9TU7duxAcHAwRo0aBRcXF7Rt2xZz586tcPXu2NhY2NvbqzcPVW+RKXByAlTlINPSjBsLERERkSkSBCA31zibIOgUoqurq3qzt7eHRCJRP75w4QJsbW3xyy+/IDAwEDKZDAcPHsTly5fx4osvwsXFBTY2NujUqRP27t2rcdzSwwIlEgm++uorDBw4ENbW1mjRogV27Nihfr70sEDV8L1ff/0VrVq1go2NDXr37q2RDD569Ahjx46Fg4MDHB0dMWnSJERERGDAgAF6/ZhWrFgBX19fWFpaomXLlli/fn2JH6GAmTNnolmzZpDJZHB3d8fYsWPVz3/++edo0aIF5HI5XFxc8Morr+h17ppi0slVZmYmFAoFXFxcNNpdXFyQnp6u9TVXrlzBDz/8AIVCgV27dmHatGlYsGAB/u///q/c88TExCA7O1u9XTOlIXgSCdC0qXjflOIiIiIiMhV5eYCNjXG2vLxqexuTJ0/Gxx9/jPPnz6N9+/Z48OAB+vbti4SEBJw4cQK9e/dGWFgYUh8zF3/WrFl49dVXcfr0afTt2xevv/467t69W8HHl4f58+dj/fr1OHDgAFJTUzFx4kT185988gm+++47rFmzBn/++SdycnKwfft2vd7btm3bMG7cOLz//vs4e/Ys3nnnHURFRWHfvn0AgC1btuCzzz7DF198gYsXL2L79u1o164dAODvv//G2LFjMXv2bCQlJSE+Ph49evTQ6/w1xeSHBepLqVSicePG+PLLL2FmZobA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ERERGQ2TKxNnbw/4+Ij3yx0ayIqBRERERERGx+SqFlAVtSg3ueKwQCIiIiIio2NyVQs8dt4VhwUSERERERkdk6ta4LE9VxwWSERERERkdAZLrq5du4brJUqDHz16FOPHj8eXX35pqFPWWaqeqwsXgIcPtexQclgg14QmIiIiIjIKgyVXr732Gvbt2wcASE9Px3PPPYejR49iypQpmD17tqFOWye5uwPOzoBCAZw9q2WHpk3F2wcPgKysmgyNiIiIiIj+Y7Dk6uzZs+jcuTMAYNOmTWjbti0OHTqE7777DmvXrjXUaeskieQx866srQFHR/E+hwYSERERERmFwZKroqIiyGQyAMDevXvRv39/AICfnx9u3rxpqNPWWawYSERERERk2gyWXLVp0wYrV67EH3/8gT179qB3794AgBs3bsBR1ctCOmPFQCIiIiIi02aw5OqTTz7BF198gZ49e2LIkCHw9/cHAOzYsUM9XJB0p+q5On1anHtVBisGEhEREREZlbmhDtyzZ09kZmYiJycHDRs2VLePGDEC1tbWhjptndWihTi1Ki8PuHgR8PMrtQOHBRIRERERGZXBeq4ePnyIgoICdWJ19epVLFq0CElJSWjcuLGhTltnmZkB7duL97XOu+KwQCIiIiIiozJYcvXiiy/im2++AQBkZWUhKCgICxYswIABA7BixQpDnbZOq3DeFYcFEhEREREZlcGSq+PHj6N79+4AgB9++AEuLi64evUqvvnmGyxZssRQp63TKqwYqEqurl8HlMqaComIiIiIiP5jsOQqLy8Ptra2AIDdu3fjpZdeglQqxVNPPYWrV68a6rR1WsmeK0Eo9aS7OyCVAkVFQEZGTYdGRERERFTvGSy5at68ObZv345r167h119/xfPPPw8AuHXrFuzs7PQ61vLly+Hl5QW5XI6goCAcPXq03H23bt2Kjh07wsHBAQ0aNEBAQADWr19fpfdiKtq1E/On27eBMkuFWVgAbm7ifQ4NJCIiIiKqcQZLrqZPn46JEyfCy8sLnTt3RnBwMACxF6uDanybDuLi4hAdHY0ZM2bg+PHj8Pf3R2hoKG7duqV1/0aNGmHKlClITEzE6dOnERUVhaioKPz666/V8r6MycqquEog510REREREZkWgyVXr7zyClJTU/H3339rJDa9evXCZ599pvNxFi5ciOHDhyMqKgqt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Odzc3PDSSy/h8uXLGvHu379f49iq342SwyJV19fly5fRt29f2Nra4vXXXweg+zUKABcuXMCrr74KZ2dnWFlZoWXLlpgyZQoAceivRCLBtm3byrxuw4YNkEgkSExMfOznSET1E/8ESkSkhzt37qBPnz4YPHgw3njjDbi4uAAA1q5dCxsbG0RHR8PGxga//fYbpk+fjpycHHz66aePPe6GDRtw//59vPPOO5BIJJg3bx5eeuklXLly5bE9KAcPHsTWrVvx3nvvwdbWFkuWLMHLL7+M1NRUODo6AgBOnDiB3r17w83NDbNmzYJCocDs2bPh7Oys0/vevHkz8vLyMHLkSDg6OuLo0aNYunQprl+/js2bN2vsq1AoEBoaiqCgIMyfPx979+7FggUL4Ovri5EjRwIQS8e/+OKLOHjwIN599120atUK27ZtQ0RExGNj6dixI3x8fLBp06Yy+8fFxaFhw4YIDQ0FAPz11184dOgQBg8ejKZNmyIlJQUrVqxAz5498c8//+jV66hPzHv27MGVK1cQFRUFV1dXnDt3Dl9++SXOnTuHw4cPQyKR4KWXXsK///6LjRs34rPPPoOTkxMAlPszycjIQJcuXZCXl4exY8fC0dER69atQ//+/fHDDz9g4MCBGvt//PHHkEqlmDhxIrKzszFv3jy8/vrrOHLkSIXvU9fP7MGDB+jevTvOnz+PYcOG4cknn0RmZiZ27NiB69evw8nJCQqFAi+88AISEhIwePBgjBs3Dvfv38eePXtw9uxZ+Pr66vz5qzx69AihoaHo1q0b5s+fr45H12v09OnT6N69OywsLDBixAh4eXnh8uXL+Omnn/DRRx+hZ8+e8PDwwHfffVfmM/3uu+/g6+tr0mWgicjIjFpOg4jIRI0aNapMZb6nn35aACCsXLmyzP55eXll2t555x3B2tpayM/PV7eVrkCnqjTn6Ogo3L17V93+448/CgCEn376Sd2mrVogAMHS0lKjutKpU6cEAMLSpUvVbWFhYYK1tbWQlpambrt48aJgbm5ebgXCx72/2NhYQSKRCFevXtV4fwCE2bNna+zboUMHITAwUP14+/btAgBh3rx56rZHjx4J3bt316nyXkxMjGBhYaHxmRUUFAgODg7CsGHDKow7MTFRACB888036jZdqgXqE7O2827cuFEAIBw4cEDd9umnnwoAhOTk5DL7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71opFICtraylEBEREdHtKy0tld5v374dCxcuRGFhobTP0tJSei+KIhobG2Ficut/sjs5Od1WHaamplCpVLd1DN0a71wZkj8+EsiJm0REREQtiSJQXd31L1FsV3kqlUp62djYQBAEafuHH36AlZUV9uzZAz8/P5iZmeGbb75BUVERJkyYABcXF1haWmLo0KE4cOCA1nn//FigIAh4//33MXHiRCiVSnh5eWHXrl1S+58fC0xJSYGtrS327duHAQMGwNLSEsHBwVphsKGhAX//+99ha2sLBwcHJCQkICoqCmFhYTf9vFevXkVERAS6d+8OpVIJb29vbNu2TauPRqPB22+/DU9PT5iZmaFnz5544403pPZffvkFERERsLe3h4WFBfz9/XH8+PF2fd9djeHKkHC+FREREVHbamoAS8uuf9XU6Owj/POf/8SyZctQUFAAHx8fqNVqjB8/HpmZmfjf//6H4OBghIaGoqSkpM3zLF68GFOmTMHp06cxfvx4REZG4rfffmvjq6vBihUr8OGHH+Lrr79GSUkJ5s+fL7W/9dZb+Pjjj7F582ZkZ2ejsrISO3fubLOG2tpa+Pn5Yffu3Thz5gxiYmIwffp0nDhxQuqTmJiIZcuWYcGCBfj++++xdetWuLi4AADUajVGjx6NixcvYteuXcjLy8NLL70EjUbTjm+y6/GxQEPCcEVERER013vttdfwt7/9Tdq2t7eHr6+vtL1kyRKkp6dj165diIuLu+l5oqOjERERAQB48803sXr1apw4cQLBwcGt9r9x4wY2bNiAPn36AADi4uLw2muvSe1r1qxBYmIiJk6cCABYu3YtvvzyyzY/S/fu3bUCWnx8PPbt24cdO3Zg2LBhqKqqwqpVq7B27VpERUUBAPr06YMHHngAALB161b8+uuvyMnJgb29PQDA09OzzWvKieHKkDBcEREREbVNqQTUanmuqyP+/v5a22q1GklJSdi9ezdKS0vR0NCA69ev3/LOlY+Pj/TewsIC1tbWKC8vv2l/pVIpBSsAcHV1lfpXVFTg8uXLGDZsmNRubGwMPz+/Nu8iNTY24s0338SOHTtw8eJF1NfXo66uTvrR3oKCAtTV1SEwMLDV43Nzc/HXv/5VClb6juHKkDBcEREREbVNEAALC7mr6BCLP9U/f/58ZGRkYMWKFfD09IRCocDkyZNRX1/f5nm6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MxMDAwPFwsJCeYsmvdHa2AEgbt68Wepz/fp18fnnnxft7OxEpVIpTpw4USwtLZWvaNIbM2fOFHv16iWampqKTk5OYmBgoLh//36pnWOHbscfl2IXRY4furnw8HDR1dVVNDU1Fbt37y6Gh4eL586dk9oNcewIoiiKMuU6IiIiIiKiuwbnXBEREREREekAwxUREREREZEOMFwRERERERHpAMMVERERERGRDjBcERERERER6QDDFRERERERkQ4wXBEREREREekAwxUREREREZEOMFwRERF1kCAI2Llzp9xlEBGRzBiuiIjIoEVHR0MQhBav4OBguUsjIqJ7jIncBRAREXVUcHAwNm/erLXPzMxMpmqIiOhexTtXRERk8MzMzKBSqbRednZ2AJoe2Vu/fj1CQkKgUCjQu3dvfPLJJ1rH5+fnY+zYsVAoFHBwcEBMTAzUarVWn02bNmHQoEEwMzODq6sr4uLitNqvXLmCiRMnQqlUwsvLC7t27ZLafv/9d0RGRsLJyQkKhQJeXl4twiARERk+hisiIrrrLViwAJMmTUJeXh4iIyMxdepUFBQUAACqq6sRFBQEOzs75OTkIC0tDQcOHNAKT+vXr0dsbCxiYmKQn5+PXbt2wdPTU+saixcvxpQpU3D69GmMHz8ekZGR+O2336Trf//999izZw8KCgqwfv16ODo6dt0XQEREXUIQRVGUuwgiIqI7FR0djY8++gjm5uZa+19++WW8/PLLEAQBzz77LNavXy+13X///RgyZAj+/e9/47333kNCQgIuXLgACwsLAMCXX36J0NBQXLp0CS4uLujevTtmzJiB119/vdUaBEHAq6++iiVLlgBoCmyWlpbYs2cPgoOD8dhjj8HR0RGbNm3qpG+BiIj0AedcERGRwXvooYe0whMA2NvbS+8DAgK02gICApCbmwsAKCgogK+vrxSsAGDkyJHQaDQoLCyEIAi4dOkSAgMD26zBx8dHem9hYQFra2uUl5cDAJ577jlMmjQJp06dwsMPP4ywsDCMGDHijj4rERHpL4YrIiIyeBYWFi0e09MVhULRrn7dunXT2hYEARqNBgAQEhKCn3/+GV9++SUyMjIQGBiI2NhYrFixQuf1EhGRfDjnioiI7nrHjh1rsT1gwAAAwIABA5CXl4fq6mqpPTs7G0ZGRujXrx+srKzg7u6OzMzMDtXg5OSEqKgofPTRR0hOTsa7777bofMREZH+4Z0rIiIyeHV1dSgrK9PaZ2JiIi0akZaWBn9/fzzwwAP4+OOPceLECWzcuBEAEBkZiUWLFiEqKgpJSUn49ddfER8fj+nTp8PFxQUAkJSUhGeffRbOzs4ICQlBVVUVsrOzER8f3676Fi5cCD8/PwwaNAh1dXX44osvpHBHRER3D4YrIiIyeHv37oWrq6vWvn79+uGHH34A0LSSX2pqKp5//nm4urpi27ZtGDhwIABAqVRi3759mDNnDoYOHQqlUolJkyZh5cqV0rmioqJQW1uLd955B/Pnz4ejoyMmT57c7vpMTU2RmJiI8+fPQ6FQYNSoUUhNTdXBJyciIn3C1QKJiOiuJggC0tPTERYWJncpRER0l+OcKyIiIiIiIh1guCIiIiIiItIBzrkiIqK7Gp9+JyKirsI7V0RERERERDrAcEVERERERKQDDFdEREREREQ6wHBFRERERESkAwxXREREREREOsBwRUREREREpAMMV0RERERERDrAcEVERERERKQD/w94LiNeaAEVWgAAAABJRU5ErkJggg==", + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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IyPx1VdfwdzcXKd83rx5mDdvHhQKBV5//XWsXbtWOvbss8+iV69e+Mc//oHPP/8cMTExuHz5MqysrAAA33//PYYPH45r165BpVKhXbt2mDJlChYvXlxrDAqFAvPnz8d7770H4EHCZm1tjd27dyMkJAQvvfQSnJycsG7dusf0KRARkSHgM1dERGT0XnjhBZ3kCQAcHByk1wEBATrHAgICkJGRAQDIysqCj4+PlFgBwHPPPQetVovs7GwoFApcu3YNQUFB9cbg7e0tvbaysoKtrS2uX78OAHjjjTcwevRonD59GoMHD0ZoaCj69u37SO+ViIgMF5MrIiIyelZWVjVu09MXCwuLRtVr3bq1zr5CoYBWqwUADBkyBL/++iu+//57pKSkICgoCFFRUVi+fLne4yUiIvnwmSsiInriHTt2rMZ+t27dAADdunXDmTNnUFJSIh1PS0uDiYkJunTpAhsbG3Ts2BGpqalNisHZ2RkRERH46quvsGrVKnz22WdNao+IiAwPZ66IiMjolZeXo6CgQKesVatW0qIRycnJ6N27N55//nl8/fXXOHHiBBITEwEA4eHhWLhwISIiIrBo0SL89ttvmDFjBiZNmgSVSgUAWLRoEV5//XW0bdsWQ4YMwZ07d5CWloYZM2Y0Kr4FCxbA19cXPXr0QHl5Ob777jspuSMioicHkysiIjJ6e/bsgYuLi05Zly5dcOHCBQAPVvJLSkrCm2++CRcXF2zevBndu3cHAFhaWmLv3r2YOXMm+vTpA0tLS4wePRorVqyQ2oqIiEBZWRlWrlyJOXPmwMnJCWPGjGl0fGZmZoiNjcUvv/wCCwsL9OvXD0lJSXp450REZEi4WiARET3RFAoFtm/fjtDQULlDISKiJxyfuSIiIiIiItIDJldERERERER6wGeuiIjoica734mIqLlw5oqIiIiIiEgPmFwRERERERHpAZMrIiIiIiIiPWByRUREREREpAdMroiIiIiIiPSAyRUREREREZEeMLkiIiIiIiLSAyZXREREREREevD/ACHCGDyB91ItAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -362,7 +305,8 @@ "import pandas as pd\n", "import tensorflow as tf\n", "import tensorflow_hub as hub\n", - "from official.nlp import optimization # to create AdamW optimizer\n", + "import tensorflow_models as tfm\n", + "#from official.nlp import optimization # to create AdamW optimizer\n", "import tensorflow_text as text # needed even if unused\n", "import time\n", "\n", @@ -442,16 +386,36 @@ "loss = tf.keras.losses.BinaryCrossentropy(from_logits=True)\n", "metrics = tf.metrics.BinaryAccuracy()\n", "\n", - "epochs = 50\n", + "epochs = 34\n", "steps_per_epoch = tf.data.experimental.cardinality(train_ds).numpy()\n", "num_train_steps = steps_per_epoch * epochs\n", "num_warmup_steps = int(0.1*num_train_steps)\n", "\n", "init_lr = 3e-5\n", - "optimizer = optimization.create_optimizer(init_lr=init_lr,\n", - " num_train_steps=num_train_steps,\n", - " num_warmup_steps=num_warmup_steps,\n", - " optimizer_type='adamw')\n", + "linear_decay = tf.keras.optimizers.schedules.PolynomialDecay(\n", + " initial_learning_rate=init_lr,\n", + " end_learning_rate=0,\n", + " decay_steps=num_train_steps)\n", + "warmup_schedule = tfm.optimization.lr_schedule.LinearWarmup(\n", + " warmup_learning_rate = 0,\n", + " after_warmup_lr_sched = linear_decay,\n", + " warmup_steps = num_warmup_steps\n", + ")\n", + "x = tf.linspace(0, num_train_steps, 1001)\n", + "y = [warmup_schedule(xi) for xi in x]\n", + "plt.plot(x,y)\n", + "plt.xlabel('Train step')\n", + "plt.ylabel('Learning rate')\n", + "\n", + "\n", + "\n", + "#optimizer = optimization.create_optimizer(init_lr=init_lr,\n", + "# num_train_steps=num_train_steps,\n", + "# num_warmup_steps=num_warmup_steps,\n", + "# optimizer_type='adamw')\n", + "optimizer = tf.keras.optimizers.experimental.Adam(\n", + " learning_rate = warmup_schedule)\n", + "\n", "\n", "classifier_model.compile(optimizer=optimizer,\n", " loss=loss,\n", diff --git a/bot/dist/index.js b/bot/dist/index.js new file mode 100644 index 0000000..0312954 --- /dev/null +++ b/bot/dist/index.js @@ -0,0 +1,33 @@ +import { MatrixClient, SimpleFsStorageProvider, AutojoinRoomsMixin, MessageEvent, } from "matrix-bot-sdk"; +import { readFile } from "fs/promises"; +import { load } from "js-yaml"; +import * as tf from "@tensorflow/tfjs-node"; +const config = load(await readFile("./config.yaml", "utf8")); +const homeserverUrl = config.homeserver; +const accessToken = config.accessToken; +const storage = new SimpleFsStorageProvider("ml-bot.json"); +const model = await tf.node.loadSavedModel(config.modelPath); +const client = new MatrixClient(homeserverUrl, accessToken, storage); +AutojoinRoomsMixin.setupOnClient(client); +client.on("room.message", handleMessage); +client.start().then(() => console.log("Bot started!")); +async function handleMessage(roomId, event) { + if (event['content']?.['msgtype'] !== 'm.text') + return; + if (event['sender'] === await client.getUserId()) + return; + const body = event['content']['body']; + console.log(`Checking: "${body}"`); + const data = tf.tensor([body]); + const prediction = model.predict(data); + const prediction_data = await prediction.array(); + console.log(`Prediction: ${prediction_data}`); + const message = new MessageEvent(event); + const textEvent = new MessageEvent(message.raw); + if (((prediction_data[0] ?? [])[0] ?? 0) > 0.8) { + await client.unstableApis.addReactionToEvent(roomId, textEvent.eventId, "Classified Spam"); + } + else { + } +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/bot/dist/index.js.map b/bot/dist/index.js.map new file mode 100644 index 0000000..80f92af --- /dev/null +++ b/bot/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,GAGf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAS5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAW,CAAC;AAKvE,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;AAGxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAKvC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,aAAa,CAAC,CAAC;AAI3D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAK7D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACrE,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAGzC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAGzC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAGvD,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,KAAU;IAEnD,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,OAAO;IACvD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,MAAM,CAAC,SAAS,EAAE;QAAE,OAAO;IAEzD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,CAAA;IAGlC,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9B,MAAM,UAAU,GAAiB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAiB,CAAC;IACrE,MAAM,eAAe,GAAe,MAAM,UAAU,CAAC,KAAK,EAAgB,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,eAAe,eAAe,EAAE,CAAC,CAAC;IAG9C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,YAAY,CAA6B,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE;QAC5C,MAAM,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;KAC7F;SAAM;KAEN;AAGL,CAAC"} \ No newline at end of file diff --git a/bot/package-lock.json b/bot/package-lock.json new file mode 100644 index 0000000..b1ee091 --- /dev/null +++ b/bot/package-lock.json @@ -0,0 +1,4824 @@ +{ + "name": "spam-ml-bot", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "spam-ml-bot", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@tensorflow/tfjs-node": "^4.1.0", + "js-yaml": "^4.1.0", + "matrix-bot-sdk": "^0.6.2" + }, + "devDependencies": { + "@types/js-yaml": "^4.0.5", + "typescript": "^4.9.4" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/debug": { + "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" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "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" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@matrix-org/matrix-sdk-crypto-nodejs": { + "version": "0.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-nodejs/-/matrix-sdk-crypto-nodejs-0.1.0-beta.3.tgz", + "integrity": "sha512-jHFn6xBeNqfsY5gX60akbss7iFBHZwXycJWMw58Mjz08OwOi7AbTxeS9I2Pa4jX9/M2iinskmGZbzpqOT2fM3A==", + "hasInstallScript": true, + "dependencies": { + "node-downloader-helper": "^2.1.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@selderee/plugin-htmlparser2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", + "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", + "dependencies": { + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@tensorflow/tfjs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-4.1.0.tgz", + "integrity": "sha512-jlrJ6MIBos8NkmF+NHIWBnKVBGYJTG06QmW/A0vgyXwkp+3PgzX8TJ4MWIv/7oZr7g27zfY6dXA1OFzrrgvklA==", + "dependencies": { + "@tensorflow/tfjs-backend-cpu": "4.1.0", + "@tensorflow/tfjs-backend-webgl": "4.1.0", + "@tensorflow/tfjs-converter": "4.1.0", + "@tensorflow/tfjs-core": "4.1.0", + "@tensorflow/tfjs-data": "4.1.0", + "@tensorflow/tfjs-layers": "4.1.0", + "argparse": "^1.0.10", + "chalk": "^4.1.0", + "core-js": "3", + "regenerator-runtime": "^0.13.5", + "yargs": "^16.0.3" + }, + "bin": { + "tfjs-custom-module": "dist/tools/custom_module/cli.js" + } + }, + "node_modules/@tensorflow/tfjs-backend-cpu": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.1.0.tgz", + "integrity": "sha512-NqxrwpYa/hXGaBa1RzxfHsLAsaniIZryhF5CxQM9uSp1ny8wUJMH+Mda/Y8+llS3weHug8JDAbAW2cabn8l84A==", + "dependencies": { + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.1.0" + } + }, + "node_modules/@tensorflow/tfjs-backend-webgl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.1.0.tgz", + "integrity": "sha512-RDjwbFCPESjh+QTrTvKC623MO58gIqxQvtX3DfJLhlsSbnsvIpA5s1CXNJYzNVmFDia35mPYKmQQWvEvhl9weA==", + "dependencies": { + "@tensorflow/tfjs-backend-cpu": "4.1.0", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.1.0" + } + }, + "node_modules/@tensorflow/tfjs-converter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.1.0.tgz", + "integrity": "sha512-pR4TSUI949a/5uUWjHga8xzxD7Y9AbobHJtCmg86Bldfl2GV8aibz87cNjpoO+iUhH8WZo1TOJy8GpM+MPT2DA==", + "peerDependencies": { + "@tensorflow/tfjs-core": "4.1.0" + } + }, + "node_modules/@tensorflow/tfjs-core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.1.0.tgz", + "integrity": "sha512-zERD4xtxNq3dV3+wPEMi2HWSV68FA8WucSAogzErp38/q98Byv9G1x8DhxQ+jowTcqN4srGWcBfK59jYwjlAvA==", + "dependencies": { + "@types/long": "^4.0.1", + "@types/offscreencanvas": "~2019.7.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "@webgpu/types": "0.1.21", + "long": "4.0.0", + "node-fetch": "~2.6.1", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + } + }, + "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { + "version": "2019.7.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", + "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" + }, + "node_modules/@tensorflow/tfjs-data": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-4.1.0.tgz", + "integrity": "sha512-H6ef6NXPwi2xKYB6tVNZi5RqniMFpfUSlxG3q0BNxnyuyeCUSjJvHJFpah9hT/ysYjVdwspzh/I6B67h+lBchg==", + "dependencies": { + "@types/node-fetch": "^2.1.2", + "node-fetch": "~2.6.1", + "string_decoder": "^1.3.0" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.1.0", + "seedrandom": "^3.0.5" + } + }, + "node_modules/@tensorflow/tfjs-layers": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.1.0.tgz", + "integrity": "sha512-lzHNTZu1GwKl7hW5tt2COSpflE0m7xrsOf8AzRzpTDVJYYRx/x5ScMt/y//5jbRuaDOnb3EjT1FxWxwkD44/sg==", + "peerDependencies": { + "@tensorflow/tfjs-core": "4.1.0" + } + }, + "node_modules/@tensorflow/tfjs-node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-4.1.0.tgz", + "integrity": "sha512-2H7UJqVafuM9fbsMdzUkcfWLpH/owgvVHWES+gQsiueIqyOjpq6ZGSQLDxyuKtHP2D/8/kWeVIbnzAjnIRniuA==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "1.0.9", + "@tensorflow/tfjs": "4.1.0", + "adm-zip": "^0.5.2", + "google-protobuf": "^3.9.2", + "https-proxy-agent": "^2.2.1", + "progress": "^2.0.0", + "rimraf": "^2.6.2", + "tar": "^4.4.6" + }, + "engines": { + "node": ">=8.11.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "node_modules/@types/node": { + "version": "18.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", + "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/seedrandom": { + "version": "2.4.30", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.30.tgz", + "integrity": "sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ==" + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" + }, + "node_modules/@webgpu/types": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.21.tgz", + "integrity": "sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "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" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/adm-zip": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/another-json": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz", + "integrity": "sha512-/Ndrl68UQLhnCdsAzEXLMFuOR546o2qbYRqCglaNHbjXrwG1ayTcdwr3zkSGOGtGXDyR5X9nCFfnyG2AFJIsqg==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "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" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async-lock": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", + "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "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" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "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==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", + "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "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" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "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" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-to-text": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", + "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.6", + "selderee": "^0.6.0" + }, + "bin": { + "html-to-text": "bin/cli.js" + }, + "engines": { + "node": ">=10.23.2" + } + }, + "node_modules/htmlencode": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz", + "integrity": "sha512-0uDvNVpzj/E2TfvLLyyXhKBRvF1y84aZsyRxRXFsQobnHaL4pcaXk+Y9cnFlvnxrBLeXDNq/VJBD+ngdBgQG1w==" + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-errors": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-fullwidth-code-point": { + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/matrix-bot-sdk": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/matrix-bot-sdk/-/matrix-bot-sdk-0.6.2.tgz", + "integrity": "sha512-+kXlXkQBQgWC6oUwYEosJlXjceaj7jQUnPlALFhGeAabgVm8tmuvFNVKqClwvrrjj+0Gzsmt+rcJHmkvqymFXA==", + "dependencies": { + "@matrix-org/matrix-sdk-crypto-nodejs": "^0.1.0-beta.1", + "@types/express": "^4.17.13", + "another-json": "^0.2.0", + "async-lock": "^1.3.2", + "chalk": "^4", + "express": "^4.18.1", + "glob-to-regexp": "^0.4.1", + "hash.js": "^1.1.7", + "html-to-text": "^8.2.0", + "htmlencode": "^0.0.4", + "lowdb": "^1", + "lru-cache": "^7.10.1", + "mkdirp": "^1.0.4", + "morgan": "^1.10.0", + "request": "^2.88.2", + "request-promise": "^4.2.6", + "sanitize-html": "^2.7.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/matrix-bot-sdk/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/matrix-bot-sdk/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "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" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "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" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "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" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/morgan/node_modules/on-finished": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-downloader-helper": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.5.tgz", + "integrity": "sha512-sLedzfv8C4VMAvTdDQcjLFAl3gydNeBXh2bLcCzvZRmd4EK0rkoTxJ8tkxnriUSJO/n13skJzH7l6CzCdBwYGg==", + "bin": { + "ndh": "bin/ndh" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, + "node_modules/parseley": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", + "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", + "dependencies": { + "moo": "^0.5.1", + "nearley": "^2.20.1" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize-html": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.7.3.tgz", + "integrity": "sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw==", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "node_modules/selderee": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", + "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", + "dependencies": { + "parseley": "^0.7.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "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" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-static": { + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/string_decoder": { + "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" + } + }, + "node_modules/string-width": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tunnel-agent": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "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" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + } + } + }, + "@matrix-org/matrix-sdk-crypto-nodejs": { + "version": "0.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-nodejs/-/matrix-sdk-crypto-nodejs-0.1.0-beta.3.tgz", + "integrity": "sha512-jHFn6xBeNqfsY5gX60akbss7iFBHZwXycJWMw58Mjz08OwOi7AbTxeS9I2Pa4jX9/M2iinskmGZbzpqOT2fM3A==", + "requires": { + "node-downloader-helper": "^2.1.1" + } + }, + "@selderee/plugin-htmlparser2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz", + "integrity": "sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA==", + "requires": { + "domhandler": "^4.2.0", + "selderee": "^0.6.0" + } + }, + "@tensorflow/tfjs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-4.1.0.tgz", + "integrity": "sha512-jlrJ6MIBos8NkmF+NHIWBnKVBGYJTG06QmW/A0vgyXwkp+3PgzX8TJ4MWIv/7oZr7g27zfY6dXA1OFzrrgvklA==", + "requires": { + "@tensorflow/tfjs-backend-cpu": "4.1.0", + "@tensorflow/tfjs-backend-webgl": "4.1.0", + "@tensorflow/tfjs-converter": "4.1.0", + "@tensorflow/tfjs-core": "4.1.0", + "@tensorflow/tfjs-data": "4.1.0", + "@tensorflow/tfjs-layers": "4.1.0", + "argparse": "^1.0.10", + "chalk": "^4.1.0", + "core-js": "3", + "regenerator-runtime": "^0.13.5", + "yargs": "^16.0.3" + } + }, + "@tensorflow/tfjs-backend-cpu": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.1.0.tgz", + "integrity": "sha512-NqxrwpYa/hXGaBa1RzxfHsLAsaniIZryhF5CxQM9uSp1ny8wUJMH+Mda/Y8+llS3weHug8JDAbAW2cabn8l84A==", + "requires": { + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" + } + }, + "@tensorflow/tfjs-backend-webgl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.1.0.tgz", + "integrity": "sha512-RDjwbFCPESjh+QTrTvKC623MO58gIqxQvtX3DfJLhlsSbnsvIpA5s1CXNJYzNVmFDia35mPYKmQQWvEvhl9weA==", + "requires": { + "@tensorflow/tfjs-backend-cpu": "4.1.0", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "seedrandom": "^3.0.5" + } + }, + "@tensorflow/tfjs-converter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.1.0.tgz", + "integrity": "sha512-pR4TSUI949a/5uUWjHga8xzxD7Y9AbobHJtCmg86Bldfl2GV8aibz87cNjpoO+iUhH8WZo1TOJy8GpM+MPT2DA==", + "requires": {} + }, + "@tensorflow/tfjs-core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.1.0.tgz", + "integrity": "sha512-zERD4xtxNq3dV3+wPEMi2HWSV68FA8WucSAogzErp38/q98Byv9G1x8DhxQ+jowTcqN4srGWcBfK59jYwjlAvA==", + "requires": { + "@types/long": "^4.0.1", + "@types/offscreencanvas": "~2019.7.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "@webgpu/types": "0.1.21", + "long": "4.0.0", + "node-fetch": "~2.6.1", + "seedrandom": "^3.0.5" + }, + "dependencies": { + "@types/offscreencanvas": { + "version": "2019.7.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", + "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" + } + } + }, + "@tensorflow/tfjs-data": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-4.1.0.tgz", + "integrity": "sha512-H6ef6NXPwi2xKYB6tVNZi5RqniMFpfUSlxG3q0BNxnyuyeCUSjJvHJFpah9hT/ysYjVdwspzh/I6B67h+lBchg==", + "requires": { + "@types/node-fetch": "^2.1.2", + "node-fetch": "~2.6.1", + "string_decoder": "^1.3.0" + } + }, + "@tensorflow/tfjs-layers": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.1.0.tgz", + "integrity": "sha512-lzHNTZu1GwKl7hW5tt2COSpflE0m7xrsOf8AzRzpTDVJYYRx/x5ScMt/y//5jbRuaDOnb3EjT1FxWxwkD44/sg==", + "requires": {} + }, + "@tensorflow/tfjs-node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-4.1.0.tgz", + "integrity": "sha512-2H7UJqVafuM9fbsMdzUkcfWLpH/owgvVHWES+gQsiueIqyOjpq6ZGSQLDxyuKtHP2D/8/kWeVIbnzAjnIRniuA==", + "requires": { + "@mapbox/node-pre-gyp": "1.0.9", + "@tensorflow/tfjs": "4.1.0", + "adm-zip": "^0.5.2", + "google-protobuf": "^3.9.2", + "https-proxy-agent": "^2.2.1", + "progress": "^2.0.0", + "rimraf": "^2.6.2", + "tar": "^4.4.6" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "@types/node": { + "version": "18.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", + "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/seedrandom": { + "version": "2.4.30", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.30.tgz", + "integrity": "sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ==" + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" + }, + "@webgpu/types": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.21.tgz", + "integrity": "sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "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==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "adm-zip": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "another-json": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/another-json/-/another-json-0.2.0.tgz", + "integrity": "sha512-/Ndrl68UQLhnCdsAzEXLMFuOR546o2qbYRqCglaNHbjXrwG1ayTcdwr3zkSGOGtGXDyR5X9nCFfnyG2AFJIsqg==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "async-lock": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", + "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "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==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "core-js": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", + "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "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": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "get-caller-file": { + "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-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "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" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "html-to-text": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", + "integrity": "sha512-aN/3JvAk8qFsWVeE9InWAWueLXrbkoVZy0TkzaGhoRBC2gCFEeRLDDJN3/ijIGHohy6H+SZzUQWN/hcYtaPK8w==", + "requires": { + "@selderee/plugin-htmlparser2": "^0.6.0", + "deepmerge": "^4.2.2", + "he": "^1.2.0", + "htmlparser2": "^6.1.0", + "minimist": "^1.2.6", + "selderee": "^0.6.0" + } + }, + "htmlencode": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz", + "integrity": "sha512-0uDvNVpzj/E2TfvLLyyXhKBRvF1y84aZsyRxRXFsQobnHaL4pcaXk+Y9cnFlvnxrBLeXDNq/VJBD+ngdBgQG1w==" + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-fullwidth-code-point": { + "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-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "requires": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "matrix-bot-sdk": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/matrix-bot-sdk/-/matrix-bot-sdk-0.6.2.tgz", + "integrity": "sha512-+kXlXkQBQgWC6oUwYEosJlXjceaj7jQUnPlALFhGeAabgVm8tmuvFNVKqClwvrrjj+0Gzsmt+rcJHmkvqymFXA==", + "requires": { + "@matrix-org/matrix-sdk-crypto-nodejs": "^0.1.0-beta.1", + "@types/express": "^4.17.13", + "another-json": "^0.2.0", + "async-lock": "^1.3.2", + "chalk": "^4", + "express": "^4.18.1", + "glob-to-regexp": "^0.4.1", + "hash.js": "^1.1.7", + "html-to-text": "^8.2.0", + "htmlencode": "^0.0.4", + "lowdb": "^1", + "lru-cache": "^7.10.1", + "mkdirp": "^1.0.4", + "morgan": "^1.10.0", + "request": "^2.88.2", + "request-promise": "^4.2.6", + "sanitize-html": "^2.7.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "node-downloader-helper": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.5.tgz", + "integrity": "sha512-sLedzfv8C4VMAvTdDQcjLFAl3gydNeBXh2bLcCzvZRmd4EK0rkoTxJ8tkxnriUSJO/n13skJzH7l6CzCdBwYGg==" + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "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": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, + "parseley": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.7.0.tgz", + "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==", + "requires": { + "moo": "^0.5.1", + "nearley": "^2.20.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + }, + "postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + } + } + }, + "request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "require-directory": { + "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==" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sanitize-html": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.7.3.tgz", + "integrity": "sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw==", + "requires": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "selderee": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.6.0.tgz", + "integrity": "sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg==", + "requires": { + "parseley": "^0.7.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" + }, + "steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "requires": { + "graceful-fs": "^4.1.3" + } + }, + "string_decoder": { + "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==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } +} diff --git a/bot/package.json b/bot/package.json new file mode 100644 index 0000000..1532443 --- /dev/null +++ b/bot/package.json @@ -0,0 +1,21 @@ +{ + "name": "spam-ml-bot", + "version": "0.1.0", + "description": "A Matrix Bot that warns admins about possible spam", + "main": "dist/index.js", + "type": "module", + "scripts": { + "build": "tsc" + }, + "author": "MTRNord ", + "license": "Apache-2.0", + "devDependencies": { + "@types/js-yaml": "^4.0.5", + "typescript": "^4.9.4" + }, + "dependencies": { + "@tensorflow/tfjs-node": "^4.1.0", + "js-yaml": "^4.1.0", + "matrix-bot-sdk": "^0.6.2" + } +} diff --git a/bot/src/index.ts b/bot/src/index.ts new file mode 100644 index 0000000..842dc05 --- /dev/null +++ b/bot/src/index.ts @@ -0,0 +1,76 @@ +import { + MatrixClient, + SimpleFsStorageProvider, + AutojoinRoomsMixin, + MessageEvent, + TextualMessageEventContent, + //RustSdkCryptoStorageProvider, +} from "matrix-bot-sdk"; +import { readFile } from "fs/promises"; +import { load } from "js-yaml"; +import * as tf from "@tensorflow/tfjs-node"; +import { Rank, Tensor } from "@tensorflow/tfjs-node"; + +type Config = { + homeserver: string; + accessToken: string; + modelPath: string; +}; + +const config = load(await readFile("./config.yaml", "utf8")) as Config; + +// This will be the URL where clients can reach your homeserver. Note that this might be different +// from where the web/chat interface is hosted. The server must support password registration without +// captcha or terms of service (public servers typically won't work). +const homeserverUrl = config.homeserver; + +// Use the access token you got from login or registration above. +const accessToken = config.accessToken; + +// In order to make sure the bot doesn't lose its state between restarts, we'll give it a place to cache +// any information it needs to. You can implement your own storage provider if you like, but a JSON file +// will work fine for this example. +const storage = new SimpleFsStorageProvider("ml-bot.json"); +// Broken +//const cryptoProvider = new RustSdkCryptoStorageProvider("./ml-bot-store"); + +const model = await tf.node.loadSavedModel(config.modelPath); + +// Finally, let's create the client and set it to autojoin rooms. Autojoining is typical of bots to ensure +// they can be easily added to any room. +//const client = new MatrixClient(homeserverUrl, accessToken, storage, cryptoProvider); +const client = new MatrixClient(homeserverUrl, accessToken, storage); +AutojoinRoomsMixin.setupOnClient(client); + +// Before we start the bot, register our command handler +client.on("room.message", handleMessage); + +// Now that everything is set up, start the bot. This will start the sync loop and run until killed. +client.start().then(() => console.log("Bot started!")); + +// This is the command handler we registered a few lines up +async function handleMessage(roomId: string, event: any) { + // Don't handle unhelpful events (ones that aren't text messages, are redacted, or sent by us) + if (event['content']?.['msgtype'] !== 'm.text') return; + if (event['sender'] === await client.getUserId()) return; + + const body = event['content']['body']; + console.log(`Checking: "${body}"`) + + // Check if spam + const data = tf.tensor([body]) + const prediction: Tensor = model.predict(data) as Tensor; + const prediction_data: number[][] = await prediction.array() as number[][]; + console.log(`Prediction: ${prediction_data}`); + + + const message = new MessageEvent(event); + const textEvent = new MessageEvent(message.raw); + if (((prediction_data[0] ?? [])[0] ?? 0) > 0.8) { + await client.unstableApis.addReactionToEvent(roomId, textEvent.eventId, "Classified Spam") + } else { + //await client.unstableApis.addReactionToEvent(roomId, textEvent.eventId, "Classified Not Spam") + } + + +} diff --git a/bot/tsconfig.json b/bot/tsconfig.json new file mode 100644 index 0000000..7556b9c --- /dev/null +++ b/bot/tsconfig.json @@ -0,0 +1,104 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + /* Language and Environment */ + "target": "ES2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "lib": [ + "ESNext" + ], + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + /* Modules */ + "module": "ESNext", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + "allowUnreachableCode": false, /* Disable error reporting for unreachable code. */ + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": [ + "./src/**/*.ts" + ], + "exclude": [ + "node_modules/**/*" + ] +} diff --git a/crates/model_server/src/main.rs b/crates/model_server/src/main.rs index c73e3d3..148285e 100644 --- a/crates/model_server/src/main.rs +++ b/crates/model_server/src/main.rs @@ -30,8 +30,7 @@ async fn main() -> Result<()> { }; let mut graph = Graph::new(); - let bundle = - SavedModelBundle::load(&SessionOptions::new(), ["serve"], &mut graph, model_path)?; + let bundle = SavedModelBundle::load(&SessionOptions::new(), ["serve"], &mut graph, model_path)?; GRAPH.set(graph).unwrap(); MODEL.set(bundle).unwrap(); @@ -150,15 +149,15 @@ async fn submit_for_review( // Sanitize // We remove newlines, html tags and links let sanitized = strip::strip_tags(&payload.input_data); - let sanitized = sanitized.replace(['\r', '\n'], " "); + //let sanitized = sanitized.replace(['\r', '\n'], " "); let mut sanitized = trim_whitespace(&sanitized); - let mut finder = LinkFinder::new(); - let cloned_sanitized = sanitized.clone(); - finder.url_must_have_scheme(false); - let links: Vec<_> = finder.links(&cloned_sanitized).collect(); - for link in links { - sanitized = sanitized.replace(link.as_str(), " "); - } + //let mut finder = LinkFinder::new(); + //let cloned_sanitized = sanitized.clone(); + //finder.url_must_have_scheme(false); + //let links: Vec<_> = finder.links(&cloned_sanitized).collect(); + //for link in links { + // sanitized = sanitized.replace(link.as_str(), " "); + //} match file { Ok(mut file) => { if let Err(e) = writeln!(file, "{}", sanitized) { diff --git a/input/MatrixData.tsv b/input/MatrixData.tsv index f9d3ef9..ed96c1e 100644 --- a/input/MatrixData.tsv +++ b/input/MatrixData.tsv @@ -5625,4 +5625,7 @@ ham Jae (DN0): why's fluff generator do this? yeah this is another weird one... spam 1: Register to get 5$ free 2: 7% -23% of daily income 3: The referral team can get 19% commission. Contact through the link to get started 👇👇👇👇👇 https://t.me/+KuOs8q7WfH8zZGZk spam Stay at Home and make money online received minimum $200 every 12hrs (1) No hidden fees (2) No Scam ASk ME How or inbox me for more information https://t.me/+KuOs8q7WfH8zZGZk https://t.me/+KuOs8q7WfH8zZGZk spam I'll help the community how to earn $30k within three days or seventy-two hours but you will reimburse me 10% of your dividend when you collect it. Note: only interested people should involve, ask me how now or Whatsapp +1 (209) 876-7868 immediately. -spam I started with € 500 and in 24hours of trading I was credited with € 5,500 excluding my € 500 that`s over 8x my startup capital. Imagine how much you will make with a higher startup capital. Thank you https://t.me/Donald_florence_binary_trade https://t.me/Donald_florence_binary_trade \ No newline at end of file +spam I started with € 500 and in 24hours of trading I was credited with € 5,500 excluding my € 500 that`s over 8x my startup capital. Imagine how much you will make with a higher startup capital. Thank you https://t.me/Donald_florence_binary_trade https://t.me/Donald_florence_binary_trade +spam @albasam7:matrix.org in #nim-science:envs.net\n\n> 💨Don’t miss this chance to be Rich ✌️👍🙏DiscJockey is mine name and am an admin who has his own store link and group link https://t.me/+b7jYjbVzzOVkYjU8 That’s my group link , you can check out my legit works there and proof 🙏UPDATE Services I offer: Sell PayPal account verified – PayPal transfer *Sell Bank Transfer – Bank Login *Sell Clone card - Secured shipping tunnel *Sell cc Fullz & random Infos – 99% valid cards *Sell Dumps with pin track 1 and 2 101 201 *Sell Western Union money transfer services *Sell Gift Card Itune – Amazon – Ebay Clone/Credit Cards *Sell Booking flight ticket services – worldwide *Sell Electronics carding services *Sell SMTP - Pass Mail - PHP - RDP !! Follow Group Stage and contact me if of you are interested to make money ! Let’s make more bread ! Follow the rules ! Order or purchase and get instantly ✌️Partnership member needed for a long term business 🙏100%. 100% High quality Good and High Quality Dumps+Pins 90% Approval TRANSFER SERVICE BTC/USDT /CASHAPP TN DUA PAYMENT ARIZONA DUA MASS UI DUA has EDD RELOAD ALL STATE DUA PAYMENT METHOD IS AVAILABLE !! FULLZ PAYPAL CASH APP DUMPS+PINS FULLZ + DUMPS PAYPAL Transfer CashaPP transfer BANK LOG and bank 🏦 deposit DUMP + P!N PRODUCTS CVV+SSN/D WU TRANSFER ♛ CARDING ALL APPLE ♛ With good product of good sell QUALITY STUFFS ! With a lot of customers worldwide and also a Valid Vendor 🇺🇸 BESTBUY TAP & PAY WORKING BINS VERIZON TAP & PAY WALMART - TAP & Pay Bin’s Amazon prime Tap & pay ••Cool random prices Random Bin’s •• COUNTRIES ! Verizon - AMAZON DUMPS with pin AMAZON TRACK1-2 Verizon- Track2- 1 With Pins Walmart - Track1-2 Pins ZIPCODE + PINS FULLZ + Ssn - details FULLZ - Dob + Pins Cvv - ZIPCODE + ATM Anyone who is ready and willing to follow the rules should immediately message me or contact me ! Telegram ✅ @DarknessWeb715 +spam @adsspottipsusa:matrix.org in #edgeware-builders:matrix.org\n\n> I'll help the community how earn $30k within 3 days and hours but you will reimburse me 10% of your dividend when you collect it. Note: only interested people should involve. Whatsapp +1 (209) 876-7868 immediately. +spam @williamjo:matrix.org in #spbpython:matrix.org\n\n> Stay at Home and make money online received minimum $200 every 12hrs (1) No hidden fees (2) No Scam ASk ME How or inbox me for more information https://t.me/+KuOs8q7WfH8zZGZk https://t.me/+KuOs8q7WfH8zZGZk