diff --git a/Project_Name/.gitignore b/Aster/.gitignore similarity index 100% rename from Project_Name/.gitignore rename to Aster/.gitignore diff --git a/Project_Name/LICENSE b/Aster/LICENSE similarity index 100% rename from Project_Name/LICENSE rename to Aster/LICENSE diff --git a/Aster/Readme.md b/Aster/Readme.md new file mode 100644 index 000000000..1a346d1d6 --- /dev/null +++ b/Aster/Readme.md @@ -0,0 +1,52 @@ + +# ⚡ Aster - Collective Data Labeling⚡ + +## Aster + +![Aster](./assets/logo.png?raw=true "Aster") +#### Hackathon Track: +1. Grand Prize +2. Infrastructure and Web3 Track +3. Interoperability Track +4. DeFi Track +5. Cash In Cash Out Track +6. Best Students Prize +7. India Prizes +8. LATAM Prizes +9. Brazil Prizes +10. Africa Prizes + +##### Region location +USA, Portugal + +##### Team Members +- Tiago Antunes, Backend Developer +- Jayee Li, Blockchain Developer +- Samuel Tang, Frontend Developer + +![Our Team](./assets/team.png?raw=true "Our Team") + + +#### Project Description +Traditional data labeling applications are opaque and exclusive. There is no transparency in the workflow process to verify the demographics of the workers and fair payments to the workers. Usually, the 3rd party companies would take a large portion of the profits and leave only a small portion to the workers. By incorporating the blockchain technologies, Aster is able to eliminate the monopolizing third-party companies to provide fair payments to the workers, allow anyone from anywhere in the world to classify data at ease on their mobile phone, and provide clients the opportunities to collect transparent and multiperspective labels. + + +#### Summary +Aster is a decentralized and collective microtask application for data. Aster enabled transparent data labeling and instant crypto rewards. Aster allows clients to upload data and task description onto our secured backend and create a smart contract on Celo Blockchain for each labeling task to incentivize users from all over the world to help classify data. The clients can view the real-time progress of their tasks on the Aster home dashboard website. The task information and the rewards per task will be displayed on the Aster web and mobile app. The labelers can log onto Aster’s mobile app to select any task they wish to work on. Once a task is completed, labelers receive instant crypto rewards as indicated on the task page. +Currently, we support only CELO as the crypto payments. We would like to implement the functionalities to support more cryptocurrencies as payments and support more data micro-tasks such as segmentation tasks and description tasks. Moreover, we would also like to provide data analytics to our clients to help them understand their data distribution and information. + +![Aster Infrastructure](./assets/AsterInfra.png?raw=true "Aster Infrastructure") + +#### URLs +1. [DevPost Homepage](https://devpost.com/software/bottomless-data-5dugkp) +2. [Aster Demo Website](https://aster-38850.web.app/) + +#### Presentation +1. [Youtube Demo](https://youtu.be/Jbdv4Z_da8U) +2. [Aster Presentation Slides](https://docs.google.com/presentation/d/1oWlUDwM8wrVbfX-5lbL_ISHMqj9Rqnhlp8ONFSIhHfs/edit?usp=sharing) + +#### Next Steps +To turn this project into a fully decentralized working solution, we would build a complete and healthy ecosystem for this project community. We need to include a reviewers community in the ecosystem to prevent frauds and ensure the quality of the micro-tasks. This can be done by implementing a decentralized reviewing mechanism on chain to incentivize users to fully support the mission of this project. + +#### License +This repository includes an [unlicensed](http://unlicense.org/) statement though you may want to [choose a different license](https://choosealicense.com/). diff --git a/Aster/assets/AsterInfra.png b/Aster/assets/AsterInfra.png new file mode 100644 index 000000000..5ac4774a4 Binary files /dev/null and b/Aster/assets/AsterInfra.png differ diff --git a/Project_Name/assets/index.md b/Aster/assets/index.md similarity index 100% rename from Project_Name/assets/index.md rename to Aster/assets/index.md diff --git a/Aster/assets/logo.png b/Aster/assets/logo.png new file mode 100644 index 000000000..334ce00f6 Binary files /dev/null and b/Aster/assets/logo.png differ diff --git a/Aster/assets/team.png b/Aster/assets/team.png new file mode 100644 index 000000000..6af879d0e Binary files /dev/null and b/Aster/assets/team.png differ diff --git a/Aster/codebase/backend/.firebaserc b/Aster/codebase/backend/.firebaserc new file mode 100644 index 000000000..b8561f15e --- /dev/null +++ b/Aster/codebase/backend/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "aster-38850" + } +} diff --git a/Aster/codebase/backend/.gitignore b/Aster/codebase/backend/.gitignore new file mode 100644 index 000000000..84cb12b04 --- /dev/null +++ b/Aster/codebase/backend/.gitignore @@ -0,0 +1,68 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +firebase-debug.log* +firebase-debug.*.log* +config.js + +# Firebase cache +.firebase/ + +# Firebase config + +# Uncomment this if you'd like others to create their own Firebase project. +# For a team working on the same Firebase project(s), it is recommended to leave +# it commented so all members can deploy to the same project(s) in .firebaserc. +# .firebaserc + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + diff --git a/Aster/codebase/backend/README.md b/Aster/codebase/backend/README.md new file mode 100644 index 000000000..bbd769612 --- /dev/null +++ b/Aster/codebase/backend/README.md @@ -0,0 +1,64 @@ +## Run the Project +1. `npm install` to install all dependencies +2. `firebase init` to initialize project with firebase +3. add firebase configuration file (see below) +4. `firebase serve` to run serve locally +or +5. `firebase deploy` to deploy apis to server + +*add firebase configurations in /functions/util/config.js: + + const firebaseConfig = { + apiKey: "", + authDomain: "", + projectId: "", + storageBucket: "", + messagingSenderId: "", + appId: "", + measurementId: "" + }; + module.exports = { firebaseConfig }; + + +## API Documentation +### HTTP-GET +* /task/[task_id] + * Return task information as JSON + * name : string + * description : string + * total_price : number + * number_of_labelers : number + * contract_address: number + * Dataset: string[] (array of image urls) + * number_of_submission: number +* /tasks + * Returns all the tasks as JSON + * name : string + * description : string + * total_price : number + * number_of_labelers + * contract_address: number + * labels: String[] + * number_of_submission: number +* /task/data/[task_id]/[user_id] + * Return data for user_id to label + * String[] (array of image urls) +* /task/labels/[task_id] + * Returns the labels given by the reviewers + * JSON + +### HTTP-POST +* /task + * Create a new task (image classification only) + name : string + description : string + total_price : number + number_of_labelers : number + labels: String[] +* /task/[task_id]/data + * Upload datasets for a specific task + * data: image +* /task/[task_id]/submit + * Submit the answers to each label that was given to this user + * data: Object {int: String} + * user_id: int diff --git a/Aster/codebase/backend/firebase.json b/Aster/codebase/backend/firebase.json new file mode 100644 index 000000000..cb5cb7334 --- /dev/null +++ b/Aster/codebase/backend/firebase.json @@ -0,0 +1,5 @@ +{ + "functions": { + "source": "functions" + } +} diff --git a/Aster/codebase/backend/functions/.gitignore b/Aster/codebase/backend/functions/.gitignore new file mode 100644 index 000000000..40b878db5 --- /dev/null +++ b/Aster/codebase/backend/functions/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/Aster/codebase/backend/functions/APIs/tasks.js b/Aster/codebase/backend/functions/APIs/tasks.js new file mode 100644 index 000000000..76f0491ad --- /dev/null +++ b/Aster/codebase/backend/functions/APIs/tasks.js @@ -0,0 +1,341 @@ +const { admin, db } = require('../util/admin'); +const { firebaseConfig } = require('../util/config'); +const { initializeApp } = require('firebase/app'); + + +initializeApp(firebaseConfig); + +const getTaskDescription = (task) => { + let data = task.data() + return { + id: task.id, + name: data.name, + description: data.description, + total_price: data.total_price, + number_of_labelers: data.number_of_labelers, + contract_id: data.contract_address, + labels: data.labels, + dataset: data.dataset, + number_of_submission: data.number_of_submission + } +} + +// GET /task/:task_id +exports.getSingleTask = async (req, res) => { + console.log('Fetching individual task') + db.collection('tasks') + .doc(req.params.task_id) + .get() + .then(doc => { + if (!doc.exists || doc === undefined) { + // throw new Error('No such task!') + res.send("Task does not exist") + } else { + res.send(JSON.stringify(getTaskDescription(doc))) + } + }) + .catch(err => { + console.log('Error getting document', err) + res.send(JSON.stringify(err)) + }) +} + +// GET /tasks +exports.getAllTasks = async (req, res) => { + db.collection('tasks') + .get() + .then(snapshot => { + const tasks = [] + snapshot.forEach(doc => { + tasks.push(getTaskDescription(doc)) + }) + res.send(JSON.stringify(tasks)) + }) + .catch(err => { + console.log('Error getting documents', err) + res.send(JSON.stringify(err)) + }) +} + +// GET /task/data/:task_id/:user_id +exports.getUserTask = async (req, res) => { + console.log('Getting individual data entries') + db.collection('tasks') + .doc(req.params.task_id) + .get() + .then(doc => { + let d = doc.data().dataset + // TODO FIXME this is returning all data for now! + // should return an array of {index : image url} + res.send(JSON.stringify(d)) + }).catch(err => { + console.log('Error getting document', err) + res.send(JSON.stringify(err)) + }) +} + +// GET /task/labels/:task_id +exports.getTaskLabeledDataset = async (req, res) => { + console.log('Fetching dataset replies') + db.collection('tasks') + .doc(req.params.task_id) + .collection('submissions') + .get() + .then(doc => { + let result = [] + doc.forEach(submission => { + // console.log(submission.data()) + result.push({ + id: submission.id, + replies: submission.data().answers, + }) + }) + + res.send(JSON.stringify(result)) + }) + .catch(err => { + console.log('Error getting documents', err) + res.send(JSON.stringify(err)) + }) +} + +// POST /task +exports.createTask = async (req, res) => { + let data = req.body + + let name, description, total_price, number_of_labelers, labels, contract_address; + + // Validate data + try { + // alphanumeric name and description + name = data.name //data.name.match("^[0-9a-zA-Z\\s]+")[0] + description = data.description + contract_address = data.contract_id.match("^[0-9a-zA-Z\\s]+")[0] + total_price = Number(data.total_price) + if (isNaN(total_price)) { + throw new Error('Total price is not a number') + } + + number_of_labelers = parseInt(data.number_of_labelers) + if (isNaN(number_of_labelers)) { + throw new Error('Number of labels is not an integer') + } + + labels = data.labels + // check if labels is an array of strings + if (!Array.isArray(labels)) { + throw new Error('Labels is not an array') + } + labels.forEach(label => { + if (typeof label !== 'string') { + throw new Error('Labels is not an array of strings') + } + }) + + let task = { + name: name, + description: description, + total_price: total_price, + number_of_labelers: number_of_labelers, + labels: labels, + contract_address: contract_address, + number_of_submission: 0 + } + + // Submit the data to the database + db.collection('tasks') + .add(task) + .then(doc => { + console.log(`Task added with ID: ${doc.id}`) + res.send(JSON.stringify(doc.id)) + }) + + } catch (err) { + console.log(err) + res.send(JSON.stringify(err)) + return + } +} + +//NOT USED +// POST /task/:task_id/data +exports.uploadTaskData = async (req, res) => { + let data = req.body.data + + // Validate the given data is an array of strings + try { + if (!Array.isArray(data)) { + throw new Error(`Data is not an array, but ${data}`) + } + + data.forEach(label => { + if (typeof label !== 'string') { + throw new Error('Data is not an array of strings') + } + }) + + // Transform data into an ordered sequence with indexes + let data_with_indexes = {} + data.forEach((label, index) => { + data_with_indexes[index] = label + }) + + + // Validate task exists + task = db.collection('tasks') + .doc(req.params.task_id) + .get() + .then(snapshot => { + if (!snapshot.exists) { + throw new Error('Task does not exist') + } + + // Submit the data to the database + db.collection('tasks') + .doc(req.params.task_id) + .update({ + dataset: data_with_indexes, + }).then(() => { + res.send(JSON.stringify('Data submitted')) + }) + }) + } catch (err) { + console.log(err) + res.send(JSON.stringify(err)) + return + } +} + +exports.uploadImage = async (request, response) => { + const BusBoy = require('busboy'); + const path = require('path'); + const os = require('os'); + const fs = require('fs'); + const busboy = new BusBoy({ headers: request.headers }); + + let imageFileName; + let imageToBeUploaded = {}; + + busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { + if (mimetype !== 'image/png' && mimetype !== 'image/jpeg') { + return response.status(400).json({ error: 'Wrong file type submited' }); + } + const imageExtension = filename.split('.')[filename.split('.').length - 1]; + imageFileName = filename; + const filePath = path.join(os.tmpdir(), imageFileName); + imageToBeUploaded = { filePath, mimetype }; + file.pipe(fs.createWriteStream(filePath)); + }); + + busboy.on('finish', () => { + admin + .storage() + .bucket() + .upload(imageToBeUploaded.filePath, { + resumable: false, + metadata: { + metadata: { + contentType: imageToBeUploaded.mimetype + } + } + }) + .then(() => { + const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${firebaseConfig.storageBucket}/o/${imageFileName}?alt=media`; + return db.collection('tasks') + .doc(request.params.task_id) + .update({ + dataset: admin.firestore.FieldValue.arrayUnion(imageUrl), + }); + }) + .then(() => { + return response.json({ message: 'Image uploaded successfully' }); + }) + .catch((error) => { + console.error(error); + return response.status(500).json({ error: error.code }); + }); + }); + busboy.end(request.rawBody); +} + +// POST /task/:task_id/submit +exports.userSubmitLabeledData = async (req, res) => { + // Validate input, should be a map with index number : String + let data = req.body.data + console.log(data) + + + let reviewer = req.body.reviewer + console.log("The wallet id is: ", reviewer) + + // Validate task exists + task = db.collection('tasks') + .doc(req.params.task_id) + .get() + .then(snapshot => { + if (!snapshot.exists) { + throw new Error('Task does not exist') + } + + // check if already submitted + db.collection('tasks') + .doc(req.params.task_id) + .collection('submissions') + .doc(String(reviewer)) + .get() + .then(doc => { + if (doc.exists) { + // throw new Error('Reviewer already submitted') + res.send(JSON.stringify('Reviewer already submitted')) + return + } + + // Validate if the given indices exist + let entries = snapshot.data().dataset + + Object.keys(data).forEach(index => { + if (!entries[index]) { + throw new Error(`Index ${index} does not exist`) + } + }) + + // Validate if the used labels exist + let reviewer_labels = new Set(Object.values(data)) + let task_labels = new Set(Object.values(snapshot.data().labels)) + + reviewer_labels.forEach(label => { + if (!task_labels.has(label)) { + throw new Error(`Label ${label} does not exist`) + } + }) + + // Inside collection tasks, in the document task_id, under the submissions label, create a new document with the id reviewer and add this data as the value + console.log("Reviewer: ", reviewer) + db.collection('tasks') + .doc(req.params.task_id) + .collection('submissions') + .doc(String(reviewer)) + .set( + { "answers": data } + ).then(() => { + + res.send(JSON.stringify('Data submitted')) + }) + db.collection('tasks') + .doc(req.params.task_id) + .update({ + number_of_submission: admin.firestore.FieldValue.increment(1), + }); + }).catch(err => { + console.log('Error getting document', err) + res.send(JSON.stringify(err)) + }) + + }).catch(err => { + console.log(err) + res.send(JSON.stringify(err)) + return + }) + + +} diff --git a/Aster/codebase/backend/functions/index.js b/Aster/codebase/backend/functions/index.js new file mode 100644 index 000000000..7c25e8c8c --- /dev/null +++ b/Aster/codebase/backend/functions/index.js @@ -0,0 +1,32 @@ +const functions = require("firebase-functions"); +const app = require('express')(); +var cors = require('cors') + +app.use(cors()) + +const { + getSingleTask, + getAllTasks, + getUserTask, + createTask, + uploadTaskData, + userSubmitLabeledData, + getTaskLabeledDataset, + uploadImage +} = require('./APIs/tasks') + +app.get('/', (req, res) => { + res.send('Hello World! This is Aster!') +}); + +app.get('/task/:task_id', getSingleTask); +app.get('/tasks', getAllTasks); +app.get('/task/data/:task_id/:user_id', getUserTask); +app.get('/task/labels/:task_id', getTaskLabeledDataset); + +app.post('/task', createTask); +// app.post('/task/:task_id/data', uploadTaskData); +app.post('/task/:task_id/submit', userSubmitLabeledData); +app.post('/task/:task_id/data', uploadImage); + +exports.api = functions.https.onRequest(app); diff --git a/Aster/codebase/backend/functions/package-lock.json b/Aster/codebase/backend/functions/package-lock.json new file mode 100644 index 000000000..f1e46dd31 --- /dev/null +++ b/Aster/codebase/backend/functions/package-lock.json @@ -0,0 +1,2992 @@ +{ + "name": "functions", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@firebase/analytics": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.7.2.tgz", + "integrity": "sha512-YxLsPojufkfe3FFg6imOMQdfdJwu5hig17jnldpdmqemj1gOIwE/peTBrksP4rxnIra26XhsBRppcPcVQyxMNQ==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/installations": "0.5.2", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/analytics-compat": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.1.3.tgz", + "integrity": "sha512-FpaJ4sbJnryCRBkKIE45L2wGt2oCmlRK+AZc4JQHw20vb8Mf1WG1qGO+FGNoFev3lJSAd21tyhoLdPvbCTnOZQ==", + "requires": { + "@firebase/analytics": "0.7.2", + "@firebase/analytics-types": "0.7.0", + "@firebase/component": "0.5.7", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/analytics-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.7.0.tgz", + "integrity": "sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ==" + }, + "@firebase/app": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.4.tgz", + "integrity": "sha512-XBrZb60m7N1XqmRhSJWADDD3J/0j9wM2VhxC5KUEtFA9SWfTn9Z3EWGtRGz7ahrMkgPJsmo0fXpvUh6cY8pQvQ==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/app-check": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.4.2.tgz", + "integrity": "sha512-DFYt22lUMvvncN3v6x9ZRE2/HHBQdRQyYtHwakAcZrRUALJiU16iDwl2CABuW4JKytTmMj+xXo0fjSIRWtwT/w==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/app-check-compat": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.1.3.tgz", + "integrity": "sha512-ka5ggmfucQDwEJTcFsXPJJ+ygPZz4Q44D5yb0sksfOAsUSpzAR83jDSxebOgTvvk+axNCFamxOsrZEV6KKDjEg==", + "requires": { + "@firebase/app-check": "0.4.2", + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/app-check-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz", + "integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==" + }, + "@firebase/app-compat": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.5.tgz", + "integrity": "sha512-GJURp5Nn8dEm72/y13Z+XMvWmMomsYViNxw6VKYqVH9f9VKnJ46Q8zYtx2ePvOuj7pAqsfwNkvAdAFYcveTe9g==", + "requires": { + "@firebase/app": "0.7.4", + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/app-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz", + "integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==" + }, + "@firebase/auth": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.18.3.tgz", + "integrity": "sha512-uS67CzypGu52H94mkptJ/lpoc0xAtVDksb/4+4HdSRwekxMt5EtyEdLMy8MH73Vk3MwTQWyTEsHEbwrGgk42pQ==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "node-fetch": "2.6.5", + "selenium-webdriver": "4.0.0-rc-1", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@firebase/auth-compat": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.1.6.tgz", + "integrity": "sha512-+HNIsti29ZX4AgLH4KdI+DAesX9DOywcmHFbVJtOE6Ow8v2d8NFTi66fa4LEU7HLCvj9YpeiEpHHLs4NamJ1tw==", + "requires": { + "@firebase/auth": "0.18.3", + "@firebase/auth-types": "0.11.0", + "@firebase/component": "0.5.7", + "@firebase/util": "1.4.0", + "node-fetch": "2.6.5", + "selenium-webdriver": "^4.0.0-beta.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" + }, + "@firebase/auth-types": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.11.0.tgz", + "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==" + }, + "@firebase/component": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.9.tgz", + "integrity": "sha512-oLCY3x9WbM5rn06qmUvbtJuPj4dIw/C9T4Th52IiHF5tiCRC5k6YthvhfUVcTwfoUhK0fOgtwuKJKA/LpCPjgA==", + "requires": { + "@firebase/util": "1.4.2", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.12.4.tgz", + "integrity": "sha512-XkrL1kXELRNkqKcltuT4hfG1gWmFiGvjFY+z7Lhb//12MqdkLjwa9YMK8c6Lo+Ro+IkWcJArQaOQYe3GkU5Wgg==", + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.9", + "@firebase/logger": "0.3.2", + "@firebase/util": "1.4.2", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.1.4.tgz", + "integrity": "sha512-dIJiZLDFF3U+MoEwoPBy7zxWmBUro1KefmwSHlpOoxmPv76tuoPm85NumpW/HmMrtTcTkC2qowtb6NjGE8X7mw==", + "requires": { + "@firebase/component": "0.5.9", + "@firebase/database": "0.12.4", + "@firebase/database-types": "0.9.3", + "@firebase/logger": "0.3.2", + "@firebase/util": "1.4.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/database-types": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.3.tgz", + "integrity": "sha512-R+YXLWy/Q7mNUxiUYiMboTwvVoprrgfyvf1Viyevskw6IoH1q8HV1UjlkLSgmRsOT9HPWt7XZUEStVZJFknHwg==", + "requires": { + "@firebase/app-types": "0.7.0", + "@firebase/util": "1.4.2" + } + } + } + }, + "@firebase/database-types": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.7.3.tgz", + "integrity": "sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A==", + "requires": { + "@firebase/app-types": "0.6.3" + }, + "dependencies": { + "@firebase/app-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.3.tgz", + "integrity": "sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw==" + } + } + }, + "@firebase/firestore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.1.1.tgz", + "integrity": "sha512-hFl+Me6F+GhtEaMsmwruOVoaJfoYinjCKyhaXzQT/jUsoBzKUBCd6MKMjYD+D+y1deAmdkFJcRNxPV7CsgF2aw==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "@firebase/webchannel-wrapper": "0.6.0", + "@grpc/grpc-js": "^1.3.2", + "@grpc/proto-loader": "^0.6.0", + "node-fetch": "2.6.5", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@firebase/firestore-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.1.4.tgz", + "integrity": "sha512-NuV0cKXE1EAxNkZxRXYjFsBPiXljuq0W3NeKyQYZTmYsVVJ215KHdR/RHAUA+1ZOfrfT2NgoZpBmE7LpYeLwXA==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/firestore": "3.1.1", + "@firebase/firestore-types": "2.5.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/firestore-types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.0.tgz", + "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==" + }, + "@firebase/functions": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.7.3.tgz", + "integrity": "sha512-LxLbR9UtULLKMWSs6vtlte2Ka5tBDPGeGwX8Mto2uAtaNdrkoWKdhiJ4OTQx1YTCRIbTQnTg3t50NO8afzTEcQ==", + "requires": { + "@firebase/app-check-interop-types": "0.1.0", + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.7", + "@firebase/messaging-interop-types": "0.1.0", + "@firebase/util": "1.4.0", + "node-fetch": "2.6.5", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@firebase/functions-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.1.4.tgz", + "integrity": "sha512-mC/z0uJbGk/RRskabvvDylpMHMsNNwNIxrjBJy3J8ADZUqpJTMuT4gq+pHlPemYqLBZuN8TffIZNVPajXxqc+Q==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/functions": "0.7.3", + "@firebase/functions-types": "0.5.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/functions-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.5.0.tgz", + "integrity": "sha512-qza0M5EwX+Ocrl1cYI14zoipUX4gI/Shwqv0C1nB864INAD42Dgv4v94BCyxGHBg2kzlWy8PNafdP7zPO8aJQA==" + }, + "@firebase/installations": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.5.2.tgz", + "integrity": "sha512-k43qItRUnjIhAcxFRhGrox2ZBY/CFJOizB30hej9HuWOFv4qXoMZOmLtKzyjskFhRn/HW8iBUVguNFAEf6iehw==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/util": "1.4.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/logger": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.2.tgz", + "integrity": "sha512-lzLrcJp9QBWpo40OcOM9B8QEtBw2Fk1zOZQdvv+rWS6gKmhQBCEMc4SMABQfWdjsylBcDfniD1Q+fUX1dcBTXA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/messaging": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.2.tgz", + "integrity": "sha512-v95cny/HsupEvFiewsobjEtQ8ItMCPsg+29VLP51SIS3Ix7Kg2TJLZ2tfHkESRFazIhf2+GNwR8hdXoajqz2og==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/installations": "0.5.2", + "@firebase/messaging-interop-types": "0.1.0", + "@firebase/util": "1.4.0", + "idb": "3.0.2", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/messaging-compat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.2.tgz", + "integrity": "sha512-ORxqIlnstjRhTpQsX7A0K9ifBTrqI7MNdWwCRbhvTh7GkzmhMe7ht+YAALrdvHD3Qty49UFrHznaIbF7Gr+nwA==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/messaging": "0.9.2", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/messaging-interop-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.1.0.tgz", + "integrity": "sha512-DbvUl/rXAZpQeKBnwz0NYY5OCqr2nFA0Bj28Fmr3NXGqR4PAkfTOHuQlVtLO1Nudo3q0HxAYLa68ZDAcuv2uKQ==" + }, + "@firebase/performance": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.5.2.tgz", + "integrity": "sha512-xHrt/BNiln3OIW9hyqKwck0x4C7Km+XKYQsP8cPDBh8AWFh//DB0ta7DuMXw7JGIuyKpK2D3iq5aQNS0MzMvSw==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/installations": "0.5.2", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/performance-compat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.1.2.tgz", + "integrity": "sha512-L9rt89eIPaucGsO/bwF199mS5+BV3kHTfK1Fr1vCmGL87kLpV8DKVccKc7Z0ZwQelfMvXOGy5jVqH/sHhiQAYg==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/performance": "0.5.2", + "@firebase/performance-types": "0.1.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/performance-types": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.1.0.tgz", + "integrity": "sha512-6p1HxrH0mpx+622Ql6fcxFxfkYSBpE3LSuwM7iTtYU2nw91Hj6THC8Bc8z4nboIq7WvgsT/kOTYVVZzCSlXl8w==" + }, + "@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "requires": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + } + }, + "@firebase/remote-config": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.3.1.tgz", + "integrity": "sha512-31nZ0NEcARw1wYKIpoAx63rA0ao28e9zYNrlSC08mBiouSOxu69lthiO0V1ZrFqR/iW9+7M2MqnOUhJ6/LYEwQ==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/installations": "0.5.2", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/remote-config-compat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.1.2.tgz", + "integrity": "sha512-j+joqwZAOO1L3pTlK8aQ3M+781ZbbOtV/TNpU4Tulqq+Psfjlx5SOYVfuF8njbbWGPLhLReFwmEjyE3jnm9hrQ==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/remote-config": "0.3.1", + "@firebase/remote-config-types": "0.2.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/remote-config-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.2.0.tgz", + "integrity": "sha512-hqK5sCPeZvcHQ1D6VjJZdW6EexLTXNMJfPdTwbD8NrXUw6UjWC4KWhLK/TSlL0QPsQtcKRkaaoP+9QCgKfMFPw==" + }, + "@firebase/storage": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.8.4.tgz", + "integrity": "sha512-Flv25G8J4hp9wa9qTy9UoaBRl2Vcsr+FGaK6RaRUAzoMw2PA46ZPt/DChJZWxKgpmOq/7HyRc8qNTwqqDJt7dA==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/util": "1.4.0", + "node-fetch": "2.6.5", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "@firebase/storage-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.1.4.tgz", + "integrity": "sha512-EV14tdnjm5yewGBgsUarGPzRUgqQX26+NVHIW1AoT+bMoODlL5ypYGv2/QA9Phi7JBvo5cAcTe4stEsu3CTF0g==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/storage": "0.8.4", + "@firebase/storage-types": "0.6.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@firebase/storage-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.6.0.tgz", + "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==" + }, + "@firebase/util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.2.tgz", + "integrity": "sha512-JMiUo+9QE9lMBvEtBjqsOFdmJgObFvi7OL1A0uFGwTmlCI1ZeNPOEBrwXkgTOelVCdiMO15mAebtEyxFuQ6FsA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.0.tgz", + "integrity": "sha512-Pz4+7HPzKvOFI1ICQ6pyUv/VgStEWq9IGiVaaV1cQLi66NIA1mD5INnY4CDNoVAxlkuZvDEUZ+cVHLQ8iwA2hQ==" + }, + "@google-cloud/common": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.8.1.tgz", + "integrity": "sha512-FOs3NFU6bDt5mXE7IFpwIeqzLwRZNu9lJYl+bHVNkwmxX/w4VyDZAiGjQHhpV1Ek+muNKlX8HPchxaIxNTuOhw==", + "optional": true, + "requires": { + "@google-cloud/projectify": "^2.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^7.9.2", + "retry-request": "^4.2.2", + "teeny-request": "^7.0.0" + } + }, + "@google-cloud/firestore": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz", + "integrity": "sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^2.24.1", + "protobufjs": "^6.8.6" + } + }, + "@google-cloud/paginator": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.6.tgz", + "integrity": "sha512-XCTm/GfQIlc1ZxpNtTSs/mnZxC2cePNhxU3X8EzHXKIJ2JFncmJj2Fcd2IP+gbmZaSZnY0juFxbUCkIeuu/2eQ==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", + "optional": true + }, + "@google-cloud/storage": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.16.0.tgz", + "integrity": "sha512-I/1lA78v9c5EbOM/KfcYsjzA7YlHQmhpzHYdKLKdYC8X5fFaQrw5nK+FU8GbEwdPxmREAF2qPbN7Ccq+A/ndWA==", + "optional": true, + "requires": { + "@google-cloud/common": "^3.8.1", + "@google-cloud/paginator": "^3.0.0", + "@google-cloud/promisify": "^2.0.0", + "arrify": "^2.0.0", + "async-retry": "^1.3.1", + "compressible": "^2.0.12", + "date-and-time": "^2.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "gcs-resumable-upload": "^3.5.1", + "get-stream": "^6.0.0", + "hash-stream-validation": "^0.2.2", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "pumpify": "^2.0.0", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "xdg-basedir": "^4.0.0" + } + }, + "@grpc/grpc-js": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.4.tgz", + "integrity": "sha512-a6222b7Dl6fIlMgzVl7e+NiRoLiZFbpcwvBH2Oli56Bn7W4/3Ld+86hK4ffPn5rx2DlDidmIcvIJiOQXyhv9gA==", + "requires": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz", + "integrity": "sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.1.1" + } + }, + "@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "optional": true + }, + "@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/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-jwt": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "requires": { + "@types/express": "*", + "@types/express-unless": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", + "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/express-unless": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz", + "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==", + "requires": { + "@types/express": "*" + } + }, + "@types/lodash": { + "version": "4.14.177", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", + "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==", + "dev": true + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/node": { + "version": "16.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.8.tgz", + "integrity": "sha512-hmT5gfpRkkHr7DZZHMf3jBe/zNcVGN+jXSL2f8nAsYfBPxQFToKwQlS/zES4Sjp488Bi73i+p6bvrNRRGU0x9Q==" + }, + "@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/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "optional": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "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==", + "optional": true, + "requires": { + "debug": "4" + } + }, + "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" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "optional": true + }, + "async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "optional": true, + "requires": { + "retry": "0.13.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "optional": true + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "optional": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "busboy": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "requires": { + "dicer": "0.3.0" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "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==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "optional": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "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==" + } + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "optional": true + }, + "date-and-time": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-2.0.1.tgz", + "integrity": "sha512-O7Xe5dLaqvY/aF/MFWArsAM1J4j7w1CSZlPCX9uHgmb+6SbkPd8Q4YOvfvH/cZGvFlJFfHOZKxQtmMUOoZhc/w==", + "optional": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dicer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "requires": { + "streamsearch": "0.1.2" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "optional": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "optional": true, + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "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": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "optional": true + }, + "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": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "optional": true + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "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==", + "optional": true + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", + "optional": true + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "firebase": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.1.3.tgz", + "integrity": "sha512-OZA60idIzSE5c01qWUDH2plhe+s4VrwbPurAh1KxvPEhMdZSOVK3zrBFHbc7nczFYWRDQpWU6v7gTHAVSANHQg==", + "requires": { + "@firebase/analytics": "0.7.2", + "@firebase/analytics-compat": "0.1.3", + "@firebase/app": "0.7.4", + "@firebase/app-check": "0.4.2", + "@firebase/app-check-compat": "0.1.3", + "@firebase/app-compat": "0.1.5", + "@firebase/app-types": "0.7.0", + "@firebase/auth": "0.18.3", + "@firebase/auth-compat": "0.1.6", + "@firebase/database": "0.12.2", + "@firebase/database-compat": "0.1.2", + "@firebase/firestore": "3.1.1", + "@firebase/firestore-compat": "0.1.4", + "@firebase/functions": "0.7.3", + "@firebase/functions-compat": "0.1.4", + "@firebase/installations": "0.5.2", + "@firebase/messaging": "0.9.2", + "@firebase/messaging-compat": "0.1.2", + "@firebase/performance": "0.5.2", + "@firebase/performance-compat": "0.1.2", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.3.1", + "@firebase/remote-config-compat": "0.1.2", + "@firebase/storage": "0.8.4", + "@firebase/storage-compat": "0.1.4", + "@firebase/util": "1.4.0" + }, + "dependencies": { + "@firebase/component": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.7.tgz", + "integrity": "sha512-CiAHUPXh2hn/lpzMShNmfAxHNQhKQwmQUJSYMPCjf2bCCt4Z2vLGpS+UWEuNFm9Zf8LNmkS+Z+U/s4Obi5carg==", + "requires": { + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.12.2.tgz", + "integrity": "sha512-Y1LZR1LIQM8YKMkeUPpAq3/e53hcfcXO+JEZ6vCzBeD6xRawqmpw6B5/DzePdCNNvjcqheXzSaR7T39eRZo/wA==", + "requires": { + "@firebase/auth-interop-types": "0.1.6", + "@firebase/component": "0.5.7", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.1.2.tgz", + "integrity": "sha512-sV32QIRSNIBj/6OYtpmPzA/SfQz1/NBZbhxg9dIhGaSt9e5HaMxXRuz2lImudX0Sd/v8DKdExrxa++K6rKrRtA==", + "requires": { + "@firebase/component": "0.5.7", + "@firebase/database": "0.12.2", + "@firebase/database-types": "0.9.1", + "@firebase/logger": "0.3.0", + "@firebase/util": "1.4.0", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.1.tgz", + "integrity": "sha512-RUixK/YrbpxbfdE+nYP0wMcEsz1xPTnafP0q3UlSS/+fW744OITKtR1J0cMRaXbvY7EH0wUVTNVkrtgxYY8IgQ==", + "requires": { + "@firebase/app-types": "0.7.0", + "@firebase/util": "1.4.0" + } + }, + "@firebase/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-7oQ+TctqekfgZImWkKuda50JZfkmAKMgh5qY4aR4pwRyqZXuJXN1H/BKkHvN1y0S4XWtF0f/wiCLKHhyi1ppPA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.4.0.tgz", + "integrity": "sha512-Qn58d+DVi1nGn0bA9RV89zkz0zcbt6aUcRdyiuub/SuEvjKYstWmHcHwh1C0qmE1wPf9a3a+AuaRtduaGaRT7A==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "firebase-admin": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.12.0.tgz", + "integrity": "sha512-AtA7OH5RbIFGoc0gZOQgaYC6cdjdhZv4w3XgWoupkPKO1HY+0GzixOuXDa75kFeoVyhIyo4PkLg/GAC1dC1P6w==", + "requires": { + "@firebase/database-compat": "^0.1.1", + "@firebase/database-types": "^0.7.2", + "@google-cloud/firestore": "^4.5.0", + "@google-cloud/storage": "^5.3.0", + "@types/node": ">=12.12.47", + "dicer": "^0.3.0", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^2.0.2", + "node-forge": "^0.10.0" + } + }, + "firebase-functions": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.16.0.tgz", + "integrity": "sha512-6ISOn0JckMtpA3aJ/+wCCGhThUhBUrpZD+tSkUeolx0Vr+NoYFXA0+2YzJZa/A2MDU8gotPzUtnauLSEQvfClQ==", + "requires": { + "@types/cors": "^2.8.5", + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + } + } + }, + "firebase-functions-test": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.2.3.tgz", + "integrity": "sha512-zYX0QTm53wCazuej7O0xqbHl90r/v1PTXt/hwa0jo1YF8nDM+iBKnLDlkIoW66MDd0R6aGg4BvKzTTdJpvigUA==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5" + } + }, + "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": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "optional": true + }, + "gaxios": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", + "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.1" + } + }, + "gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "optional": true, + "requires": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + } + }, + "gcs-resumable-upload": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.6.0.tgz", + "integrity": "sha512-IyaNs4tx3Mp2UKn0CltRUiW/ZXYFlBNuK/V+ixs80chzVD+BJq3+8bfiganATFfCoMluAjokF9EswNJdVuOs8A==", + "optional": true, + "requires": { + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "configstore": "^5.0.0", + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "google-auth-library": "^7.0.0", + "pumpify": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "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-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "optional": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "google-auth-library": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.2.tgz", + "integrity": "sha512-M37o9Kxa/TLvOLgF71SXvLeVEP5sbSTmKl1zlIgl72SFy5PtsU3pOdu8G8MIHHpQ3/NZabDI8rQkA9DvQVKkPA==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } + }, + "google-gax": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz", + "integrity": "sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g==", + "optional": true, + "requires": { + "@grpc/grpc-js": "~1.4.0", + "@grpc/proto-loader": "^0.6.1", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^7.6.1", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^2.1.1", + "proto3-json-serializer": "^0.1.5", + "protobufjs": "6.11.2", + "retry-request": "^4.0.0" + } + }, + "google-p12-pem": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", + "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "optional": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "optional": true + }, + "gtoken": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", + "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", + "optional": true, + "requires": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0" + } + }, + "hash-stream-validation": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", + "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==", + "optional": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "optional": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "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" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "optional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "optional": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "optional": true + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jose": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.5.tgz", + "integrity": "sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA==", + "requires": { + "@panva/asn1.js": "^1.0.0" + } + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "optional": true, + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jszip": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "optional": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jwks-rsa": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.0.5.tgz", + "integrity": "sha512-fliHfsiBRzEU0nXzSvwnh0hynzGB0WihF+CinKbSRlaqRxbqqKf2xbBPgwc8mzf18/WgwlG8e5eTpfSTBcU4DQ==", + "requires": { + "@types/express-jwt": "0.0.42", + "debug": "^4.3.2", + "jose": "^2.0.5", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.4" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "optional": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "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==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-memoizer": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz", + "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==", + "requires": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "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==", + "optional": true, + "requires": { + "semver": "^6.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "optional": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "optional": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", + "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, + "proto3-json-serializer": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz", + "integrity": "sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog==", + "optional": true, + "requires": { + "protobufjs": "^6.11.2" + } + }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "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" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "optional": true, + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "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==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "optional": true + }, + "retry-request": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", + "optional": true, + "requires": { + "debug": "^4.1.1", + "extend": "^3.0.2" + } + }, + "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" + } + }, + "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==" + }, + "selenium-webdriver": { + "version": "4.0.0-rc-1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-rc-1.tgz", + "integrity": "sha512-bcrwFPRax8fifRP60p7xkWDGSJJoMkPAzufMlk5K2NyLPht/YZzR2WcIk1+3gR8VOCLlst1P2PI+MXACaFzpIw==", + "requires": { + "jszip": "^3.6.0", + "rimraf": "^3.0.2", + "tmp": "^0.2.1", + "ws": ">=7.4.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "optional": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "optional": true + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", + "optional": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "optional": true, + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "optional": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "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" + } + }, + "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==", + "optional": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "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" + } + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", + "optional": true + }, + "teeny-request": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz", + "integrity": "sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg==", + "optional": true, + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "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" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "optional": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "optional": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "optional": true + }, + "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==", + "optional": true + }, + "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==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "optional": true + } + } +} diff --git a/Aster/codebase/backend/functions/package.json b/Aster/codebase/backend/functions/package.json new file mode 100644 index 000000000..4c4f26b81 --- /dev/null +++ b/Aster/codebase/backend/functions/package.json @@ -0,0 +1,29 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "14" + }, + "main": "index.js", + "dependencies": { + "busboy": "^0.3.1", + "cors": "^2.8.5", + "firebase": "^9.1.3", + "firebase-admin": "^9.8.0", + "firebase-functions": "^3.14.1", + "fs": "0.0.1-security", + "os": "^0.1.2", + "path": "^0.12.7" + }, + "devDependencies": { + "firebase-functions-test": "^0.2.0" + }, + "private": true +} diff --git a/Aster/codebase/backend/functions/util/admin.js b/Aster/codebase/backend/functions/util/admin.js new file mode 100644 index 000000000..9d0bd5261 --- /dev/null +++ b/Aster/codebase/backend/functions/util/admin.js @@ -0,0 +1,7 @@ +const admin = require("firebase-admin"); + +admin.initializeApp(); + +const db = admin.firestore(); + +module.exports = { admin, db}; \ No newline at end of file diff --git a/Aster/codebase/backend/functions/util/auth.js b/Aster/codebase/backend/functions/util/auth.js new file mode 100644 index 000000000..1443e27a8 --- /dev/null +++ b/Aster/codebase/backend/functions/util/auth.js @@ -0,0 +1,26 @@ +const { admin, db } = require('./admin') + +module.exports = (request, response, next) => { + let idToken; + if (request.headers.authorization && request.headers.authorization.startsWith('Bearer ')) { + idToken = request.headers.authorization.split('Bearer ')[1]; + } else { + console.error('No token found'); + return response.status(403).json({ error: 'Unauthorized' }); + } + admin.auth() + .verifyIdToken(idToken) + .then((decodedToken) => { + request.user = decodedToken; + return db.collection('users').where('userId', '==', request.user.uid).limit(1).get(); + }) + .then((data) => { + request.user.username = data.docs[0].data().username; + request.user.imageUrl = data.docs[0].data().imageUrl; + return next(); + }) + .catch((err) => { + console.error('Error while verifying token', err); + return response.status(403).json(err); + }); +}; \ No newline at end of file diff --git a/Aster/codebase/backend/functions/util/contract_interaction.js b/Aster/codebase/backend/functions/util/contract_interaction.js new file mode 100644 index 000000000..e5b52450a --- /dev/null +++ b/Aster/codebase/backend/functions/util/contract_interaction.js @@ -0,0 +1,14 @@ +// const Web3 = require('web3') +// const ContractKit = require('@celo/contractkit') +// const web3 = new Web3('https://alfajores-forno.celo-testnet.org') +// const kit = ContractKit.newKitFromWeb3(web3) + +// async function awaitWrapper(){ +// kit.connection.addAccount(account.privateKey) +// } +// awaitWrapper(); + + +// export const pay_labeler = (user_address, contract_address) => { +// let contract = new kit.web3.eth.Contract(ABI, address); +// } \ No newline at end of file diff --git a/Aster/codebase/backend/functions/util/validators.js b/Aster/codebase/backend/functions/util/validators.js new file mode 100644 index 000000000..c0571d660 --- /dev/null +++ b/Aster/codebase/backend/functions/util/validators.js @@ -0,0 +1,44 @@ +const isEmpty = (string) => { + if (string.trim() === '') return true; + else return false; +}; + +exports.validateLoginData = (data) => { + let errors = {}; + if (isEmpty(data.email)) errors.email = 'Must not be empty'; + if (isEmpty(data.password)) errors.password = 'Must not be empty'; + return { + errors, + valid: Object.keys(errors).length === 0 ? true : false + }; +}; + +const isEmail = (email) => { + const emailRegEx = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + if (email.match(emailRegEx)) return true; + else return false; +}; + +exports.validateSignUpData = (data) => { + let errors = {}; + + if (isEmpty(data.email)) { + errors.email = 'Must not be empty'; + } else if (!isEmail(data.email)) { + errors.email = 'Must be valid email address'; + } + + if (isEmpty(data.firstName)) errors.firstName = 'Must not be empty'; + if (isEmpty(data.lastName)) errors.lastName = 'Must not be empty'; + if (isEmpty(data.phoneNumber)) errors.phoneNumber = 'Must not be empty'; + if (isEmpty(data.country)) errors.country = 'Must not be empty'; + + if (isEmpty(data.password)) errors.password = 'Must not be empty'; + if (data.password !== data.confirmPassword) errors.confirmPassword = 'Passowrds must be the same'; + if (isEmpty(data.username)) errors.username = 'Must not be empty'; + + return { + errors, + valid: Object.keys(errors).length === 0 ? true : false + }; +}; \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo-shared/assets.json b/Aster/codebase/frontend-mobile/.expo-shared/assets.json new file mode 100644 index 000000000..17ad2288c --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo-shared/assets.json @@ -0,0 +1,4 @@ +{ + "f9155ac790fd02fadcdeca367b02581c04a353aa6d5aa84409a59f6804c87acd": true, + "89ed26367cdb9b771858e026f2eb95bfdb90e5ae943e716575327ec325f39c44": true +} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/README.md b/Aster/codebase/frontend-mobile/.expo/README.md new file mode 100644 index 000000000..d8971e420 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/README.md @@ -0,0 +1,17 @@ +> Why do I have a folder named ".expo" in my project? + +The ".expo" folder is created when an Expo project is started using "expo start" command. + +> What does the "packager-info.json" file contain? + +The "packager-info.json" file contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator. + +> What does the "settings.json" file contain? + +The "settings.json" file contains the server configuration that is used to serve the application manifest. + +> Should I commit the ".expo" folder? + +No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. + +Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/Aster/codebase/frontend-mobile/.expo/packager-info.json b/Aster/codebase/frontend-mobile/.expo/packager-info.json new file mode 100644 index 000000000..f46dc509f --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/packager-info.json @@ -0,0 +1,10 @@ +{ + "devToolsPort": 19002, + "expoServerPort": null, + "packagerPort": null, + "packagerPid": null, + "expoServerNgrokUrl": null, + "packagerNgrokUrl": null, + "ngrokPid": null, + "webpackServerPort": null +} diff --git a/Aster/codebase/frontend-mobile/.expo/settings.json b/Aster/codebase/frontend-mobile/.expo/settings.json new file mode 100644 index 000000000..470dc6375 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/settings.json @@ -0,0 +1,10 @@ +{ + "hostType": "lan", + "lanType": "ip", + "dev": true, + "minify": false, + "urlRandomness": null, + "https": false, + "scheme": null, + "devClient": false +} diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0027ded9165f39e0944108566c3ed1f8.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0027ded9165f39e0944108566c3ed1f8.json new file mode 100644 index 000000000..f9624bb64 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0027ded9165f39e0944108566c3ed1f8.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError = function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n}\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n}\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/hash-base/node_modules/readable-stream/errors-browser.js"],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","codes","createErrorType","code","message","Base","Error","getMessage","arg1","arg2","arg3","NodeError","_Base","call","name","oneOf","expected","thing","Array","isArray","len","length","map","i","String","concat","slice","join","startsWith","str","search","pos","substr","endsWith","this_len","undefined","substring","includes","start","indexOf","value","TypeError","actual","determiner","replace","msg","type","arg","module","exports"],"mappings":"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","sourcesContent":["'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/00b12c6ace1a9e94e2d2ea04da703dd9.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/00b12c6ace1a9e94e2d2ea04da703dd9.json new file mode 100644 index 000000000..96705f2b7 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/00b12c6ace1a9e94e2d2ea04da703dd9.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes');\nexports.createHash = exports.Hash = require('create-hash');\nexports.createHmac = exports.Hmac = require('create-hmac');\n\nvar algos = require('browserify-sign/algos');\n\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\n\nexports.getHashes = function () {\n return hashes;\n};\n\nvar p = require('pbkdf2');\n\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\n\nvar aes = require('browserify-cipher');\n\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\n\nvar dh = require('diffie-hellman');\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\n\nvar sign = require('browserify-sign');\n\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = require('create-ecdh');\n\nvar publicEncrypt = require('public-encrypt');\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt;\n\nvar rf = require('randomfill');\n\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\n\nexports.createCredentials = function () {\n throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\\n'));\n};\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n};","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/crypto-browserify/index.js"],"names":["exports","randomBytes","rng","pseudoRandomBytes","prng","require","createHash","Hash","createHmac","Hmac","algos","algoKeys","Object","keys","hashes","concat","getHashes","p","pbkdf2","pbkdf2Sync","aes","Cipher","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers","dh","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","sign","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","Error","join","constants"],"mappings":"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","sourcesContent":["'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/010b412220971c09ef0133ced0293d60.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/010b412220971c09ef0133ced0293d60.json new file mode 100644 index 000000000..770f21071 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/010b412220971c09ef0133ced0293d60.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nmodule.exports = Readable;\nvar Duplex;\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n\nvar Stream = require(\"./internal/streams/stream\");\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n\nvar BufferList = require(\"./internal/streams/buffer_list\");\n\nvar destroyImpl = require(\"./internal/streams/destroy\");\n\nvar _require = require(\"./internal/streams/state\"),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require(\"../errors\").codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require(\"./_stream_duplex\");\n options = options || {};\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n this.sync = true;\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n this.emitClose = options.emitClose !== false;\n this.autoDestroy = !!options.autoDestroy;\n this.destroyed = false;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.awaitDrain = 0;\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require(\"./_stream_duplex\");\n if (!(this instanceof Readable)) return new Readable(options);\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n if (!this._readableState) {\n return;\n }\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n this._readableState.encoding = this._readableState.decoder.encoding;\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n}\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n if (state.length === 0) state.needReadable = true;\n\n this._read(state.highWaterMark);\n\n state.sync = false;\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n if (!state.ended) state.needReadable = true;\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n emitReadable(stream);\n } else {\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) break;\n }\n\n state.readingMore = false;\n}\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup');\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n }\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n prependListener(dest, 'error', onerror);\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n dest.emit('pipe', src);\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n if (state.pipesCount === 0) return this;\n\n if (state.pipesCount === 1) {\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n if (!dest) {\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n }\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n state.readableListening = this.listenerCount('readable') > 0;\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n state.flowing = true;\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n}\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[typeof Symbol === \"function\" ? Symbol.asyncIterator : \"@@asyncIterator\"] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require(\"./internal/streams/async_iterator\");\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\nfunction fromList(n, state) {\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require(\"./internal/streams/from\");\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js"],"names":["module","exports","Readable","Duplex","ReadableState","EE","require","EventEmitter","EElistenerCount","emitter","type","listeners","length","Stream","Buffer","OurUint8Array","global","Uint8Array","_uint8ArrayToBuffer","chunk","from","_isUint8Array","obj","isBuffer","debugUtil","debug","debuglog","BufferList","destroyImpl","_require","getHighWaterMark","_require$codes","codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","StringDecoder","createReadableStreamAsyncIterator","errorOrDestroy","kProxyEvents","prependListener","event","fn","_events","on","Array","isArray","unshift","options","stream","isDuplex","objectMode","readableObjectMode","highWaterMark","buffer","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","destroyed","defaultEncoding","awaitDrain","readingMore","decoder","encoding","_readableState","readable","read","_read","destroy","_destroy","call","Object","defineProperty","prototype","enumerable","get","undefined","set","value","_undestroy","undestroy","err","cb","push","state","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","er","chunkInvalid","getPrototypeOf","addChunk","write","maybeReadMore","emit","emitReadable","isPaused","setEncoding","enc","p","head","content","data","next","clear","MAX_HWM","computeNewHighWaterMark","n","howMuchToRead","parseInt","nOrig","endReadable","doRead","ret","fromList","end","emitReadable_","process","nextTick","flow","maybeReadMore_","len","pipe","dest","pipeOpts","src","doEnd","stdout","stderr","endFn","onend","unpipe","once","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","pipeOnDrain","cleanedUp","removeListener","onclose","onfinish","onerror","ondata","_writableState","needDrain","indexOf","pause","resume","pipeOnDrainFunctionResult","dests","i","index","splice","ev","res","listenerCount","nReadingNextTick","addListener","updateReadableListening","removeAllListeners","apply","arguments","self","resume_","wrap","_this","methodWrap","method","methodWrapReturnFunction","bind","Symbol","asyncIterator","_fromList","shift","join","first","concat","consume","endReadableNT","wState","finished","iterable","opts","xs","x","l"],"mappings":"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","sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/025c53d9794a05b5c1d6995a58a1dd27.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/025c53d9794a05b5c1d6995a58a1dd27.json new file mode 100644 index 000000000..3b8942526 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/025c53d9794a05b5c1d6995a58a1dd27.json @@ -0,0 +1 @@ +{"ast":null,"code":"var bn = require('bn.js');\n\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\n\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n do {\n var a = new bn(this.rand.generate(min_bytes));\n } while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n var n1 = n.subn(1);\n\n for (var s = 0; !n1.testn(s); s++) {}\n\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/miller-rabin/lib/mr.js"],"names":["bn","require","brorand","MillerRabin","rand","Rand","module","exports","create","prototype","_randbelow","n","len","bitLength","min_bytes","Math","ceil","a","generate","cmp","_randrange","start","stop","size","sub","add","test","k","cb","red","mont","rone","toRed","max","n1","subn","s","testn","d","shrn","rn1","prime","x","redPow","i","redSqr","getDivisor","g","gcd","cmpn","fromRed"],"mappings":"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","sourcesContent":["var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02641d7c2c1f0e1fb607a357ab738377.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02641d7c2c1f0e1fb607a357ab738377.json new file mode 100644 index 000000000..1c837d4f9 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02641d7c2c1f0e1fb607a357ab738377.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nvar decoders = exports;\ndecoders.der = require(\"./der\");\ndecoders.pem = require(\"./pem\");","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/asn1.js/lib/asn1/decoders/index.js"],"names":["decoders","exports","der","require","pem"],"mappings":"AAAA;;AAEA,IAAMA,QAAQ,GAAGC,OAAjB;AAEAD,QAAQ,CAACE,GAAT,GAAeC,OAAO,SAAtB;AACAH,QAAQ,CAACI,GAAT,GAAeD,OAAO,SAAtB","sourcesContent":["'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02bf479c291db1ecbcb3a4246d2ae247.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02bf479c291db1ecbcb3a4246d2ae247.json new file mode 100644 index 000000000..cb428dff9 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/02bf479c291db1ecbcb3a4246d2ae247.json @@ -0,0 +1 @@ +{"ast":null,"code":"function incr32(iv) {\n var len = iv.length;\n var item;\n\n while (len--) {\n item = iv.readUInt8(len);\n\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\n\nmodule.exports = incr32;","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/browserify-aes/incr32.js"],"names":["incr32","iv","len","length","item","readUInt8","writeUInt8","module","exports"],"mappings":"AAAA,SAASA,MAAT,CAAiBC,EAAjB,EAAqB;AACnB,MAAIC,GAAG,GAAGD,EAAE,CAACE,MAAb;AACA,MAAIC,IAAJ;;AACA,SAAOF,GAAG,EAAV,EAAc;AACZE,IAAAA,IAAI,GAAGH,EAAE,CAACI,SAAH,CAAaH,GAAb,CAAP;;AACA,QAAIE,IAAI,KAAK,GAAb,EAAkB;AAChBH,MAAAA,EAAE,CAACK,UAAH,CAAc,CAAd,EAAiBJ,GAAjB;AACD,KAFD,MAEO;AACLE,MAAAA,IAAI;AACJH,MAAAA,EAAE,CAACK,UAAH,CAAcF,IAAd,EAAoBF,GAApB;AACA;AACD;AACF;AACF;;AACDK,MAAM,CAACC,OAAP,GAAiBR,MAAjB","sourcesContent":["function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0359f416d852c1a3ceb9e85e1064f214.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0359f416d852c1a3ceb9e85e1064f214.json new file mode 100644 index 000000000..9824848ed --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0359f416d852c1a3ceb9e85e1064f214.json @@ -0,0 +1 @@ +{"ast":null,"code":"var inherits = require('inherits');\n\nvar Hash = require(\"./hash\");\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\nSha.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\n\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n\nSha.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n }\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\n\nmodule.exports = Sha;","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/sha.js/sha.js"],"names":["inherits","require","Hash","Buffer","K","W","Array","Sha","init","_w","call","prototype","_a","_b","_c","_d","_e","rotl5","num","rotl30","ft","s","b","c","d","_update","M","a","e","i","readInt32BE","j","t","_hash","H","allocUnsafe","writeInt32BE","module","exports"],"mappings":"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","sourcesContent":["/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0548d9600b15894fe89daf448b119de4.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0548d9600b15894fe89daf448b119de4.json new file mode 100644 index 000000000..ee9e0641d --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0548d9600b15894fe89daf448b119de4.json @@ -0,0 +1 @@ +{"ast":null,"code":"module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = [];\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/webpack/buildin/module.js"],"names":["module","exports","webpackPolyfill","deprecate","paths","children","Object","defineProperty","enumerable","get","l","i"],"mappings":"AAAAA,MAAM,CAACC,OAAP,GAAiB,UAASD,MAAT,EAAiB;AACjC,MAAI,CAACA,MAAM,CAACE,eAAZ,EAA6B;AAC5BF,IAAAA,MAAM,CAACG,SAAP,GAAmB,YAAW,CAAE,CAAhC;;AACAH,IAAAA,MAAM,CAACI,KAAP,GAAe,EAAf;AAEA,QAAI,CAACJ,MAAM,CAACK,QAAZ,EAAsBL,MAAM,CAACK,QAAP,GAAkB,EAAlB;AACtBC,IAAAA,MAAM,CAACC,cAAP,CAAsBP,MAAtB,EAA8B,QAA9B,EAAwC;AACvCQ,MAAAA,UAAU,EAAE,IAD2B;AAEvCC,MAAAA,GAAG,EAAE,eAAW;AACf,eAAOT,MAAM,CAACU,CAAd;AACA;AAJsC,KAAxC;AAMAJ,IAAAA,MAAM,CAACC,cAAP,CAAsBP,MAAtB,EAA8B,IAA9B,EAAoC;AACnCQ,MAAAA,UAAU,EAAE,IADuB;AAEnCC,MAAAA,GAAG,EAAE,eAAW;AACf,eAAOT,MAAM,CAACW,CAAd;AACA;AAJkC,KAApC;AAMAX,IAAAA,MAAM,CAACE,eAAP,GAAyB,CAAzB;AACA;;AACD,SAAOF,MAAP;AACA,CArBD","sourcesContent":["module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05579526479fcc3df40021158ec19f2d.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05579526479fcc3df40021158ec19f2d.json new file mode 100644 index 000000000..ba2f6698f --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05579526479fcc3df40021158ec19f2d.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nvar utils = require(\"../utils\");\n\nvar common = require(\"../common\");\n\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\n\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\n\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 32; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14];\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32];\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n assert(this.k.length === W.length);\n\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ ~xh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ ~xl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ xh & zh ^ yh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ xl & zl ^ yl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2);\n var c2_hi = rotr64_hi(xl, xh, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2);\n var c2_lo = rotr64_lo(xl, xh, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29);\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29);\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/hash.js/lib/hash/sha/512.js"],"names":["utils","require","common","assert","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","BlockHash","sha512_K","SHA512","call","h","k","W","Array","inherits","module","exports","blockSize","outSize","hmacStrength","padLength","prototype","_prepareBlock","msg","start","i","length","c0_hi","g1_512_hi","c0_lo","g1_512_lo","c1_hi","c1_lo","c2_hi","g0_512_hi","c2_lo","g0_512_lo","c3_hi","c3_lo","_update","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","s1_512_hi","s1_512_lo","ch64_hi","ch64_lo","c4_hi","c4_lo","T1_hi","T1_lo","s0_512_hi","s0_512_lo","maj64_hi","maj64_lo","T2_hi","T2_lo","_digest","digest","enc","toHex32","split32","xh","xl","yh","yl","zh","r","zl"],"mappings":"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","sourcesContent":["'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05b23f405a0c89e80b74519104e83dac.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05b23f405a0c89e80b74519104e83dac.json new file mode 100644 index 000000000..57edb2af2 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/05b23f405a0c89e80b74519104e83dac.json @@ -0,0 +1 @@ +{"ast":null,"code":"var xor = require('buffer-xor');\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\n\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n\n var out = self._cipher.decryptBlock(block);\n\n return xor(out, pad);\n};","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/browserify-aes/modes/cbc.js"],"names":["xor","require","exports","encrypt","self","block","data","_prev","_cipher","encryptBlock","decrypt","pad","out","decryptBlock"],"mappings":"AAAA,IAAIA,GAAG,GAAGC,OAAO,CAAC,YAAD,CAAjB;;AAEAC,OAAO,CAACC,OAAR,GAAkB,UAAUC,IAAV,EAAgBC,KAAhB,EAAuB;AACvC,MAAIC,IAAI,GAAGN,GAAG,CAACK,KAAD,EAAQD,IAAI,CAACG,KAAb,CAAd;AAEAH,EAAAA,IAAI,CAACG,KAAL,GAAaH,IAAI,CAACI,OAAL,CAAaC,YAAb,CAA0BH,IAA1B,CAAb;AACA,SAAOF,IAAI,CAACG,KAAZ;AACD,CALD;;AAOAL,OAAO,CAACQ,OAAR,GAAkB,UAAUN,IAAV,EAAgBC,KAAhB,EAAuB;AACvC,MAAIM,GAAG,GAAGP,IAAI,CAACG,KAAf;AAEAH,EAAAA,IAAI,CAACG,KAAL,GAAaF,KAAb;;AACA,MAAIO,GAAG,GAAGR,IAAI,CAACI,OAAL,CAAaK,YAAb,CAA0BR,KAA1B,CAAV;;AAEA,SAAOL,GAAG,CAACY,GAAD,EAAMD,GAAN,CAAV;AACD,CAPD","sourcesContent":["var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/07400c5d118eddd3f04e2f1bc681cee9.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/07400c5d118eddd3f04e2f1bc681cee9.json new file mode 100644 index 000000000..49f201161 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/07400c5d118eddd3f04e2f1bc681cee9.json @@ -0,0 +1 @@ +{"ast":null,"code":"function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/@babel/runtime/helpers/nonIterableRest.js"],"names":["_nonIterableRest","TypeError","module","exports"],"mappings":"AAAA,SAASA,gBAAT,GAA4B;AAC1B,QAAM,IAAIC,SAAJ,CAAc,2IAAd,CAAN;AACD;;AAEDC,MAAM,CAACC,OAAP,GAAiBH,gBAAjB","sourcesContent":["function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/08ddd6122b6694312ac50a8abd0666a9.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/08ddd6122b6694312ac50a8abd0666a9.json new file mode 100644 index 000000000..7a23c3af2 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/08ddd6122b6694312ac50a8abd0666a9.json @@ -0,0 +1 @@ +{"ast":null,"code":"var ClientRequest = require(\"./lib/request\");\n\nvar response = require(\"./lib/response\");\n\nvar extend = require('xtend');\n\nvar statusCodes = require('builtin-status-codes');\n\nvar url = require('url');\n\nvar http = exports;\n\nhttp.request = function (opts, cb) {\n if (typeof opts === 'string') opts = url.parse(opts);else opts = extend(opts);\n var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';\n var protocol = opts.protocol || defaultProtocol;\n var host = opts.hostname || opts.host;\n var port = opts.port;\n var path = opts.path || '/';\n if (host && host.indexOf(':') !== -1) host = '[' + host + ']';\n opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path;\n opts.method = (opts.method || 'GET').toUpperCase();\n opts.headers = opts.headers || {};\n var req = new ClientRequest(opts);\n if (cb) req.on('response', cb);\n return req;\n};\n\nhttp.get = function get(opts, cb) {\n var req = http.request(opts, cb);\n req.end();\n return req;\n};\n\nhttp.ClientRequest = ClientRequest;\nhttp.IncomingMessage = response.IncomingMessage;\n\nhttp.Agent = function () {};\n\nhttp.Agent.defaultMaxSockets = 4;\nhttp.globalAgent = new http.Agent();\nhttp.STATUS_CODES = statusCodes;\nhttp.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE'];","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/stream-http/index.js"],"names":["ClientRequest","require","response","extend","statusCodes","url","http","exports","request","opts","cb","parse","defaultProtocol","global","location","protocol","search","host","hostname","port","path","indexOf","method","toUpperCase","headers","req","on","get","end","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS"],"mappings":"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","sourcesContent":["var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/09dd71f2fe3b9c894b4768a413c88c5c.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/09dd71f2fe3b9c894b4768a413c88c5c.json new file mode 100644 index 000000000..77057ea15 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/09dd71f2fe3b9c894b4768a413c88c5c.json @@ -0,0 +1 @@ +{"ast":null,"code":"'use strict';\n\nmodule.exports = function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$onlyFirst = _ref.onlyFirst,\n onlyFirst = _ref$onlyFirst === void 0 ? false : _ref$onlyFirst;\n\n var pattern = [\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\", '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'].join('|');\n return new RegExp(pattern, onlyFirst ? undefined : 'g');\n};","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/ansi-regex/index.js"],"names":["module","exports","onlyFirst","pattern","join","RegExp","undefined"],"mappings":"AAAA;;AAEAA,MAAM,CAACC,OAAP,GAAiB,YAA8B;AAAA,iFAAP,EAAO;AAAA,4BAA5BC,SAA4B;AAAA,MAA5BA,SAA4B,+BAAhB,KAAgB;;AAC9C,MAAMC,OAAO,GAAG,CACf,8HADe,EAEf,0DAFe,EAGdC,IAHc,CAGT,GAHS,CAAhB;AAKA,SAAO,IAAIC,MAAJ,CAAWF,OAAX,EAAoBD,SAAS,GAAGI,SAAH,GAAe,GAA5C,CAAP;AACA,CAPD","sourcesContent":["'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0b271d70a9e9631baa7e2ddb08b04d19.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0b271d70a9e9631baa7e2ddb08b04d19.json new file mode 100644 index 000000000..a923d5036 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0b271d70a9e9631baa7e2ddb08b04d19.json @@ -0,0 +1 @@ +{"ast":null,"code":"(function (module, exports) {\n 'use strict';\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000);\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n\n if (c >= 65 && c <= 70) {\n return c - 55;\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var off = 0;\n var j = 0;\n var w;\n\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n if (c >= 49) {\n r += c - 49 + 0xa;\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n this.words = [0];\n this.length = 1;\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n };\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n\n off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n var groupSize = groupSizes[base];\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n };\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n }\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n BN.prototype.iuand = function iuand(num) {\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n BN.prototype.iuxor = function iuxor(num) {\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n BN.prototype.isub = function isub(num) {\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n var cmp = this.cmp(num);\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n };\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\n for (var k = 0; k < out.length - 1; k++) {\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n };\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n var carry = 0;\n\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {} else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n if (this.length <= s) return false;\n var w = this.words[s];\n return !!(w & q);\n };\n\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n assert(carry === -1);\n carry = 0;\n\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n\n this.negative = 1;\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip();\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n var A = new BN(1);\n var B = new BN(0);\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n }\n\n var carry = q;\n\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n BN.prototype.ucmp = function ucmp(num) {\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n };\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n };\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n };\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n function MPrime(name, p) {\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n r.strip();\n } else {\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\n K256.prototype.split = function split(input, output) {\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n var lo = 0;\n\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n var carry = 0;\n\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n };\n\n BN._prime = function prime(name) {\n if (primes[name]) return primes[name];\n var prime;\n\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n\n primes[name] = prime;\n return prime;\n };\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","map":{"version":3,"sources":["/usr/local/lib/node_modules/expo-cli/node_modules/public-encrypt/node_modules/bn.js/lib/bn.js"],"names":["module","exports","assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","negative","words","length","red","_init","wordSize","Buffer","window","require","e","num","Array","isArray","max","left","right","cmp","min","init","_initNumber","_initArray","toString","replace","start","_parseHex","_parseBase","toArray","Math","ceil","i","j","w","off","strip","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","len","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","b","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","toBitArray","bit","wbit","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","a","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","iadd","isub","add","sub","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","mulTo","x","y","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","bhiBits","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","ireduce","rlen","split","imulK","undefined","_strip","input","K256","call","output","outLen","prev","next","P224","P192","P25519","_prime","prime","imod","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","mont","Mont","rinv","minv","u"],"mappings":"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","sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n"]},"metadata":{},"sourceType":"script"} \ No newline at end of file diff --git a/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0e7a9c006686001942ed784e7a792314.json b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0e7a9c006686001942ed784e7a792314.json new file mode 100644 index 000000000..38d12d312 --- /dev/null +++ b/Aster/codebase/frontend-mobile/.expo/web/cache/development/babel-loader/0e7a9c006686001942ed784e7a792314.json @@ -0,0 +1 @@ +{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nvar _jsxFileName = \"/Users/samueltang/Desktop/Aster/frontend-mobile/App.js\";\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport React, { useState, useEffect } from 'react';\nimport \"./global\";\nimport { web3, kit } from \"./root\";\nimport Image from \"react-native-web/dist/exports/Image\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport Text from \"react-native-web/dist/exports/Text\";\nimport TextInput from \"react-native-web/dist/exports/TextInput\";\nimport Button from \"react-native-web/dist/exports/Button\";\nimport View from \"react-native-web/dist/exports/View\";\nimport YellowBox from \"react-native-web/dist/exports/YellowBox\";\nimport { requestTxSig, waitForSignedTxs, requestAccountAddress, waitForAccountAuth, FeeCurrency } from '@celo/dappkit';\nimport * as Linking from 'expo-linking';\nimport CeloDAppKit from \"./celo-dappkit\";\nimport TaskList from \"./pages/TaskList\";\nYellowBox.ignoreWarnings(['Warning: The provided value \\'moz', 'Warning: The provided value \\'ms-stream']);\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#35d07f',\n alignItems: 'center',\n justifyContent: 'center'\n },\n title: {\n marginVertical: 8,\n fontSize: 20,\n fontWeight: 'bold'\n }\n});\n\nvar App = function App() {\n var _useState = useState('Not logged in'),\n _useState2 = _slicedToArray(_useState, 2),\n address = _useState2[0],\n setAddress = _useState2[1];\n\n var _useState3 = useState('Not logged in'),\n _useState4 = _slicedToArray(_useState3, 2),\n phoneNumber = _useState4[0],\n setPhoneNumber = _useState4[1];\n\n var _useState5 = useState('Not logged in'),\n _useState6 = _slicedToArray(_useState5, 2),\n cUSDBalance = _useState6[0],\n setcUSDBalance = _useState6[1];\n\n var _useState7 = useState(true),\n _useState8 = _slicedToArray(_useState7, 2),\n isLoadingBalance = _useState8[0],\n setIsLoadingBalance = _useState8[1];\n\n var login = function login() {\n var requestId, dappName, callback, dappkitResponse, stableToken, cUSDBalanceBig, ERC20_DECIMALS, cUSDBalanceDec, cUSDBalance;\n return _regeneratorRuntime.async(function login$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n requestId = 'login';\n dappName = 'Hello Celo';\n callback = Linking.makeUrl('/my/path');\n requestAccountAddress({\n requestId: requestId,\n dappName: dappName,\n callback: callback\n });\n _context.next = 6;\n return _regeneratorRuntime.awrap(waitForAccountAuth(requestId));\n\n case 6:\n dappkitResponse = _context.sent;\n kit.defaultAccount = dappkitResponse.address;\n _context.next = 10;\n return _regeneratorRuntime.awrap(kit.contracts.getStableToken());\n\n case 10:\n stableToken = _context.sent;\n _context.next = 13;\n return _regeneratorRuntime.awrap(stableToken.balanceOf(kit.defaultAccount));\n\n case 13:\n cUSDBalanceBig = _context.sent;\n ERC20_DECIMALS = 18;\n cUSDBalanceDec = cUSDBalanceBig.shiftedBy(-ERC20_DECIMALS).toFixed(2);\n cUSDBalance = cUSDBalanceDec.toString();\n setcUSDBalance(cUSDBalance);\n setIsLoadingBalance(false);\n setAddress(dappkitResponse.address);\n setPhoneNumber(dappkitResponse.phoneNumber);\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, null, null, Promise);\n };\n\n return React.createElement(View, {\n style: styles.container,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 84,\n columnNumber: 5\n }\n }, React.createElement(TaskList, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 7\n }\n }));\n};\n\nexport default App;","map":{"version":3,"sources":["/Users/samueltang/Desktop/Aster/frontend-mobile/App.js"],"names":["React","useState","useEffect","web3","kit","requestTxSig","waitForSignedTxs","requestAccountAddress","waitForAccountAuth","FeeCurrency","Linking","CeloDAppKit","TaskList","YellowBox","ignoreWarnings","styles","StyleSheet","create","container","flex","backgroundColor","alignItems","justifyContent","title","marginVertical","fontSize","fontWeight","App","address","setAddress","phoneNumber","setPhoneNumber","cUSDBalance","setcUSDBalance","isLoadingBalance","setIsLoadingBalance","login","requestId","dappName","callback","makeUrl","dappkitResponse","defaultAccount","contracts","getStableToken","stableToken","balanceOf","cUSDBalanceBig","ERC20_DECIMALS","cUSDBalanceDec","shiftedBy","toFixed","toString"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react'\nimport './global'\nimport { web3, kit } from './root'\nimport { Image, StyleSheet, Text, TextInput, Button, View, YellowBox } from 'react-native'\nimport { \n requestTxSig,\n waitForSignedTxs,\n requestAccountAddress,\n waitForAccountAuth,\n FeeCurrency\n} from '@celo/dappkit'\nimport * as Linking from 'expo-linking'\nimport CeloDAppKit from './celo-dappkit'\nimport TaskList from './pages/TaskList'\n\nYellowBox.ignoreWarnings(['Warning: The provided value \\'moz', 'Warning: The provided value \\'ms-stream'])\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#35d07f',\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n marginVertical: 8, \n fontSize: 20, \n fontWeight: 'bold'\n }\n});\n\nconst App = () => {\n\n // Set the defaults for the state\n const [address, setAddress] = useState('Not logged in');\n const [phoneNumber, setPhoneNumber] = useState('Not logged in');\n const [cUSDBalance, setcUSDBalance] = useState('Not logged in');\n const [isLoadingBalance, setIsLoadingBalance] = useState(true);\n\n\n const login = async () => {\n \n // A string you can pass to DAppKit, that you can use to listen to the response for that request\n const requestId = 'login'\n \n // A string that will be displayed to the user, indicating the DApp requesting access/signature\n const dappName = 'Hello Celo'\n \n // The deeplink that the Celo Wallet will use to redirect the user back to the DApp with the appropriate payload.\n const callback = Linking.makeUrl('/my/path')\n \n // Ask the Celo Alfajores Wallet for user info\n requestAccountAddress({\n requestId,\n dappName,\n callback,\n })\n \n // Wait for the Celo Wallet response\n const dappkitResponse = await waitForAccountAuth(requestId)\n\n // Set the default account to the account returned from the wallet\n kit.defaultAccount = dappkitResponse.address\n\n // Get the stabel token contract\n const stableToken = await kit.contracts.getStableToken()\n\n // Get the user account balance (cUSD)\n const cUSDBalanceBig = await stableToken.balanceOf(kit.defaultAccount)\n \n // Convert from a big number to a string by rounding it to the appropriate number of decimal places\n const ERC20_DECIMALS = 18\n let cUSDBalanceDec = cUSDBalanceBig.shiftedBy(-ERC20_DECIMALS).toFixed(2)\n let cUSDBalance = cUSDBalanceDec.toString()\n \n // Update state\n setcUSDBalance(cUSDBalance);\n setIsLoadingBalance(false);\n setAddress(dappkitResponse.address);\n setPhoneNumber(dappkitResponse.phoneNumber);\n }\n\n return (\n \n\n {/* */}\n {/* Login first\n