From 119797dcd05ad5c99612ef82c5f02de376af6114 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 14:15:30 -0700 Subject: [PATCH 01/54] reorg / cleanup csv writing --- writeToCSV.js | 95 ++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 50 deletions(-) diff --git a/writeToCSV.js b/writeToCSV.js index e62d0f5..0c9b708 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,69 +1,64 @@ -const fs = require('fs') -const path = require('path') -const fswrite = fs.writeFileSync -const fsappend = fs.appendFileSync - -const writeHeader = (pathToFile, header) => fswrite(pathToFile, header + '\r\n') -const append = (pathToFile, row) => fsappend(pathToFile, row + '\r\n') +const fs = require('fs'); +const path = require('path'); const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replaceAll(' ', " ") : '' +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' + +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') + +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') const writeToCSV = (courseId, data) => { - const csv = path.join(__dirname, `output/${courseId}-discussion.csv`); + const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) - const header = [ - 'topic_id', - 'topic_title', - 'topic_message', + const headers =[ + 'topic_id', + 'topic_title', + 'topic_message', 'topic_author_id', - 'topic_author_name', - 'topic_timestamp', + 'topic_author_name', + 'topic_timestamp', 'post_author_id', - 'post_author_name', - 'post_id', - 'post_parent_id', + 'post_author_name', + 'post_id', + 'post_parent_id', 'post_message', - 'post_likes', + 'post_likes', 'post_timestamp' - ]; + ] - writeHeader(csv, header); + // Write the headers to the CSV file + writeHeader(csvPath, Array.from(headers)) data.forEach(discussion => { - const topicDetails = [ - discussion.topicId, - stripHTML(escapeComment(discussion.topicTitle)), - stripHTML(escapeComment(discussion.topicMessage)), - discussion.topicAuthorId, - escapeComment(discussion.topicAuthorName), - discussion.topicCreatedAt - ]; + const topicDetails = { + topic_id: discussion.topicId, + topic_title: stripHTML(escapeComment(discussion.topicTitle)), + topic_message: stripHTML(escapeComment(discussion.topicMessage)), + topic_author_id: discussion.topicAuthorId, + topic_author_name: escapeComment(discussion.topicAuthorName), + topic_timestamp: discussion.topicCreatedAt + }; if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { discussion.replies.flat().forEach(post => { - append(csv, [ - discussion.topicId, - stripHTML(escapeComment(discussion.topicTitle)), - stripHTML(escapeComment(discussion.topicMessage)), - discussion.topicAuthorId, - escapeComment(discussion.topicAuthorName), - discussion.topicCreatedAt, - post.postAuthorId, - escapeComment(post.postAuthorName), - post.postId, - post.postParentId, - stripHTML(escapeComment(post.postMessage)), - post.postLikes, - post.postTimestamp - ]); - }); + const postDetails = { + ...topicDetails, + post_author_id: post.postAuthorId, + post_author_name: escapeComment(post.postAuthorName), + post_id: post.postId, + post_parent_id: post.postParentId, + post_message: stripHTML(escapeComment(post.postMessage)), + post_likes: post.postLikes, + post_timestamp: post.postTimestamp + }; + appendRow(csvPath, Object.values(postDetails)); + }) } else { - append(csv, topicDetails); + appendRow(csvPath, Object.values(topicDetails)); } - }); -}; - -module.exports = writeToCSV + }) +} +module.exports = writeToCSV; From b445974278d8b83d2e4fe938ff09b034493ff85d Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 16:05:50 -0700 Subject: [PATCH 02/54] add new metrics and output --- index.js | 15 ++++-- writeSummaryToCSV.js | 110 +++++++++++++++++++++++++++++++++++++++++++ writeToCSV.js | 7 ++- 3 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 writeSummaryToCSV.js diff --git a/index.js b/index.js index 22b5f08..595c400 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ const capi = require('node-canvas-api') const { flatten } = require('./util') const writeToCSV = require('./writeToCSV') +const writeSummaryToCSV = require('./writeSummaryToCSV') require('dotenv').config(); // Check for COURSE_IDS in environment variables @@ -71,10 +72,14 @@ const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()); Promise.all( courseIds.map(courseId => - getDiscussions(courseId) - .then(discussions => writeToCSV(courseId, discussions)) + getDiscussions(courseId).then(discussions => { + return Promise.all([ + writeToCSV(courseId, discussions), + writeSummaryToCSV(courseId, discussions) + ]); + }) ) ).catch(error => { - const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}` - console.error('Error processing discussions:', detailedErrorMessage) -}); + const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}`; + console.error('Error processing discussions:', detailedErrorMessage); +}); \ No newline at end of file diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js new file mode 100644 index 0000000..7d6b8a4 --- /dev/null +++ b/writeSummaryToCSV.js @@ -0,0 +1,110 @@ +const fs = require('fs') +const path = require('path') + +const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' + +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' + +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') + +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') + +// Function to calculate the topic summary +const topicSummary = (topic) => { + const posts = topic.replies.flat() + const topicCreatedAt = new Date(topic.topicCreatedAt) + + // Number of posts + const numberOfPosts = posts.length + + if (numberOfPosts === 0) { + return { + numberOfPosts: 0, + medianWordCount: 0, + averageTimeDiff: 0, + averagePostsPerAuthor: 0 + } + } + + // Word count function + const getWordCount = (str) => { + const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags + return cleanStr.trim().split(/\s+/).length + } + + // Word counts + const wordCounts = posts.map(post => getWordCount(post.postMessage)) + + // Median word count + const median = (arr) => { + const sorted = arr.slice().sort((a, b) => a - b) + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 + } + const medianWordCount = Math.round(median(wordCounts) * 10) / 10 + + // Average time in hours from topicCreatedAt to postTimestamp + const timeDiffs = posts.map(post => { + const postTimestamp = new Date(post.postTimestamp) + return (postTimestamp - topicCreatedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours + }) + const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 + + // Average number of posts per postAuthorId + const postCountsByAuthor = posts.reduce((acc, post) => { + acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 + return acc + }, {}) + const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 + + return { + numberOfPosts, + medianWordCount, + averageTimeDiff, + averagePostsPerAuthor + } +} + +// Function to write the summary to CSV +const writeSummaryToCSV = (courseId, data) => { + + console.log(`Writing summary of discussion data for course: ${courseId}`) + const csvPath = path.join(__dirname, `output/${courseId}-discussion-summary.csv`) + + const headers = [ + 'topic_id', + 'topic_title', + //'topic_message', + 'topic_author_id', + 'topic_author_name', + 'topic_timestamp', + 'number_of_posts', + 'median_posts_word_count', + 'average_time_to_post_hours', + 'average_posts_per_author' + ] + + // Write the headers to the CSV file + writeHeader(csvPath, Array.from(headers)) + + data.forEach(discussion => { + const summary = topicSummary(discussion) + + const topicDetails = { + topic_id: discussion.topicId, + topic_title: stripHTML(escapeComment(discussion.topicTitle)), + //topic_message: stripHTML(escapeComment(discussion.topicMessage)), + topic_author_id: discussion.topicAuthorId, + topic_author_name: escapeComment(discussion.topicAuthorName), + topic_timestamp: discussion.topicCreatedAt, + number_of_posts: summary.numberOfPosts, + median_posts_word_count: summary.medianWordCount, + average_time_to_post_hours: summary.averageTimeDiff, + average_posts_per_author: summary.averagePostsPerAuthor + } + + appendRow(csvPath, Object.values(topicDetails)) + }) +} + +module.exports = writeSummaryToCSV diff --git a/writeToCSV.js b/writeToCSV.js index 0c9b708..415be9a 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -10,6 +10,9 @@ const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, header const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') const writeToCSV = (courseId, data) => { + + console.log(`Writing discussion data for course: ${courseId}`); + const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) const headers =[ @@ -53,10 +56,10 @@ const writeToCSV = (courseId, data) => { post_likes: post.postLikes, post_timestamp: post.postTimestamp }; - appendRow(csvPath, Object.values(postDetails)); + appendRow(csvPath, Object.values(postDetails)) }) } else { - appendRow(csvPath, Object.values(topicDetails)); + appendRow(csvPath, Object.values(topicDetails)) } }) } From ab03d7b7d0308da798945862b335dda4a17b025d Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 16:09:16 -0700 Subject: [PATCH 03/54] topic_posted_at and topic_created_at --- README.md | 3 ++- index.js | 2 ++ writeSummaryToCSV.js | 10 ++++++---- writeToCSV.js | 6 ++++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c3c143d..f64aefb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ This project pulls data via the Canvas API the discussions for the specified Can * 'topic_message', * 'topic_author_id', * 'topic_author_name', -* 'topic_timestamp', +* 'topic_created_at', +* 'topic_posted_at', * 'post_author_id', * 'post_author_name', * 'post_id', diff --git a/index.js b/index.js index 595c400..6371873 100644 --- a/index.js +++ b/index.js @@ -49,6 +49,7 @@ const getDiscussions = async courseId => { const topicMessage = topic.message const author = topic.author const topicCreatedAt = topic.created_at + const topicPostedAt = topic.posted_at const participants = discussion.participants const replies = discussion.view.length > 0 ? discussion.view @@ -63,6 +64,7 @@ const getDiscussions = async courseId => { topicAuthorId: author.id || '', topicAuthorName: author.display_name || '', topicCreatedAt, + topicPostedAt, replies } }) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 7d6b8a4..8db333c 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -12,7 +12,7 @@ const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(', // Function to calculate the topic summary const topicSummary = (topic) => { const posts = topic.replies.flat() - const topicCreatedAt = new Date(topic.topicCreatedAt) + const topicPostedAt = new Date(topic.topicPostedAt) // Number of posts const numberOfPosts = posts.length @@ -46,7 +46,7 @@ const topicSummary = (topic) => { // Average time in hours from topicCreatedAt to postTimestamp const timeDiffs = posts.map(post => { const postTimestamp = new Date(post.postTimestamp) - return (postTimestamp - topicCreatedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours + return (postTimestamp - topicPostedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours }) const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 @@ -77,7 +77,8 @@ const writeSummaryToCSV = (courseId, data) => { //'topic_message', 'topic_author_id', 'topic_author_name', - 'topic_timestamp', + 'topic_created_at', + 'topic_posted_at', 'number_of_posts', 'median_posts_word_count', 'average_time_to_post_hours', @@ -96,7 +97,8 @@ const writeSummaryToCSV = (courseId, data) => { //topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_timestamp: discussion.topicCreatedAt, + topic_created_at: discussion.topicCreatedAt, + topic_posted_at: discussion.topicPostedAt, number_of_posts: summary.numberOfPosts, median_posts_word_count: summary.medianWordCount, average_time_to_post_hours: summary.averageTimeDiff, diff --git a/writeToCSV.js b/writeToCSV.js index 415be9a..0b0e800 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -21,7 +21,8 @@ const writeToCSV = (courseId, data) => { 'topic_message', 'topic_author_id', 'topic_author_name', - 'topic_timestamp', + 'topic_created_at', + 'topic_posted_at', 'post_author_id', 'post_author_name', 'post_id', @@ -41,7 +42,8 @@ const writeToCSV = (courseId, data) => { topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_timestamp: discussion.topicCreatedAt + topic_created_at: discussion.topicCreatedAt, + topic_posted_at: discussion.topicPostedAt }; if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { From a11821674bd3badb434a8c97dbc3843d4b13b826 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 16:24:41 -0700 Subject: [PATCH 04/54] add 0 for no replies --- writeSummaryToCSV.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 8db333c..d030246 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -22,6 +22,8 @@ const topicSummary = (topic) => { numberOfPosts: 0, medianWordCount: 0, averageTimeDiff: 0, + firstReplyTimestamp: 0, + averageTimeToPostFromFirst: 0, averagePostsPerAuthor: 0 } } @@ -46,8 +48,9 @@ const topicSummary = (topic) => { // Average time in hours from topicCreatedAt to postTimestamp const timeDiffs = posts.map(post => { const postTimestamp = new Date(post.postTimestamp) - return (postTimestamp - topicPostedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours + return (postTimestamp - topicCreatedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours }) + const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 // Average number of posts per postAuthorId @@ -57,10 +60,27 @@ const topicSummary = (topic) => { }, {}) const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 + + const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) + const timeDiffsFromFirst = posts + .map(post => { + const postTimestamp = new Date(post.postTimestamp) + return postTimestamp > firstReplyTimestamp + ? (postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours + : null + }) + .filter(diff => diff !== null) + + const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 + ? Math.round((timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length) * 10) / 10 + : 0 + return { numberOfPosts, medianWordCount, averageTimeDiff, + firstReplyTimestamp, + averageTimeToPostFromFirst, averagePostsPerAuthor } } @@ -82,6 +102,8 @@ const writeSummaryToCSV = (courseId, data) => { 'number_of_posts', 'median_posts_word_count', 'average_time_to_post_hours', + 'first_reply_timestamp', + 'average_time_to_post_from_first_reply_hours', 'average_posts_per_author' ] @@ -102,9 +124,10 @@ const writeSummaryToCSV = (courseId, data) => { number_of_posts: summary.numberOfPosts, median_posts_word_count: summary.medianWordCount, average_time_to_post_hours: summary.averageTimeDiff, + first_reply_timestamp: summary.firstReplyTimestamp, + average_time_to_post_from_first_reply_hours: summary.averageTimeToPostFromFirst, average_posts_per_author: summary.averagePostsPerAuthor } - appendRow(csvPath, Object.values(topicDetails)) }) } From 6a236db6f70139ccf307a38f53b4200b685edd82 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 16:28:57 -0700 Subject: [PATCH 05/54] add description for summary --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index f64aefb..9949a88 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ > 💡 If you are teaching at the University of British Columbia, you may also be interested in the tool `Threadz` which provides visualizations and data from your Canvas discussion forums through a user interface in Canvas. You can learn more about the tool and how to request access in your course from the [LTHub Instructor Guide](https://lthub.ubc.ca/guides/threadz-instructor-guide/). `Threadz` was developed by Eastern Washington University. # Canvas Discussion + +### Data +> `{course_id}-discussion.csv` This project pulls data via the Canvas API the discussions for the specified Canvas course(s) and exports the results as CSV. The columns exported are: * 'topic_id', * 'topic_title', @@ -21,6 +24,25 @@ This project pulls data via the Canvas API the discussions for the specified Can Where a `topic` corresponds to a `discussion_topic` and `post` refers to replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. +### Summary Data +> `{course_id}-discussion-summary.csv` + +We have calculated summary metrics for each topic. The csv with the summary information includes the following columns: +* 'topic_id', +* 'topic_title', +* 'topic_author_id', +* 'topic_author_name', +* 'topic_created_at', +* 'topic_posted_at', +* 'number_of_posts': the total number of posts and replies in the topic +* 'median_posts_word_count': the median word count for all posts and replies to the topic +* 'average_time_to_post_hours': the average time to post or reply from the topic created_at date +* 'first_reply_timestamp': the timestamp of the first post +* 'average_time_to_post_from_first_reply_hours': the averate time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful mettric of time to reply) +* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) + +Where a `post` is a response to a topic, and a `reply` is a reply to the post. + ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. From 692e569df5321b7884e46de86cf72ec03acf8fc3 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 8 Jul 2024 16:40:47 -0700 Subject: [PATCH 06/54] add better descriptions --- README.md | 6 ++++-- image-1.png | Bin 0 -> 97352 bytes writeSummaryToCSV.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 image-1.png diff --git a/README.md b/README.md index 9949a88..75dbad2 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ This project pulls data via the Canvas API the discussions for the specified Can * 'post_likes', * 'post_timestamp' -Where a `topic` corresponds to a `discussion_topic` and `post` refers to replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. +Where a `topic` corresponds to a `discussion_topic` and `post` refers to all replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. ### Summary Data > `{course_id}-discussion-summary.csv` @@ -38,11 +38,13 @@ We have calculated summary metrics for each topic. The csv with the summary info * 'median_posts_word_count': the median word count for all posts and replies to the topic * 'average_time_to_post_hours': the average time to post or reply from the topic created_at date * 'first_reply_timestamp': the timestamp of the first post -* 'average_time_to_post_from_first_reply_hours': the averate time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful mettric of time to reply) +* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) * 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) Where a `post` is a response to a topic, and a `reply` is a reply to the post. +![alt text](image-1.png) + ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. diff --git a/image-1.png b/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1d6c6c04c0e6786d6e4fb4c298b49a0a0dd3ed GIT binary patch literal 97352 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
>p~~mnooof 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 MYF@}Zcf;?00rHm@wEzGB literal 0 HcmV?d00001 diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index d030246..b46b2e0 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -12,7 +12,7 @@ const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(', // Function to calculate the topic summary const topicSummary = (topic) => { const posts = topic.replies.flat() - const topicPostedAt = new Date(topic.topicPostedAt) + const topicCreatedAt = new Date(topic.topicCreatedAt) // Number of posts const numberOfPosts = posts.length From 2e0c7e7d7f5031e64616c1c8f0940e7358303bef Mon Sep 17 00:00:00 2001 From: Alison Myers Date: Wed, 4 Sep 2024 12:48:05 -0700 Subject: [PATCH 07/54] Pr to updatemetrics add summary by module (#30) * add function to get module and items * create unique functions for re-usability * create data strucuture for modules * create summary by module fn and remove old code * add variable and explain in readme for inclusion of summary by module * update output names and include info in readme --- README.md | 20 ++++- index.js | 155 ++++++++++++++++++++++++----------- writeSummaryByModuleToCSV.js | 86 +++++++++++++++++++ 3 files changed, 213 insertions(+), 48 deletions(-) create mode 100644 writeSummaryByModuleToCSV.js diff --git a/README.md b/README.md index 75dbad2..56fb220 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,20 @@ Where a `post` is a response to a topic, and a `reply` is a reply to the post. ![alt text](image-1.png) +> `{course_id}-module-discussion-summary.csv` + +We have calculated summary metrics at the level of `module` where there are multiple discussion topics. This is optional (see .env creation above) The csv with the summary information includes the following columns: +* 'module_id', +* 'module_name', +* 'module_unlock_at': assuming the course uses an unlock_at date this will be used to calculate, +* 'number_of_posts': the total number of posts and replies in the module +* 'median_posts_word_count': the median word count for all posts and replies to the module topics +* 'average_time_to_post_hours': the average time to post or reply from the module_unlock_at date +* 'first_reply_timestamp': the timestamp of the first post +* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) +* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) + + ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. @@ -64,15 +78,17 @@ These instructions will get you a copy of the project up and running on your loc 1. Create a `.env` file. 1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. > - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` > - At another institution it might be something like `https://{school}.instructure.com/api/v1` +1. Add `INCLUDE_MODULE_SUMMARY=true` (or `INCLUDE_MODULE_SUMMARY=false`) to indicate whether you would like to include a summary grouped by module. If this is not in the .env it will default to false and no module summary will be created. Your .env file should look like ``` CANVAS_API_TOKEN=22322... CANVAS_API_DOMAIN=https://ubc.instructure.com/api/v1 COURSE_IDS=1111,1112 + INCLUDE_MODULE_SUMMARY=false ``` -1. Run the script. `npm start`. -1. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. +2. Run the script. `npm start`. +3. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. ## Authors diff --git a/index.js b/index.js index 6371873..b2754c2 100644 --- a/index.js +++ b/index.js @@ -2,14 +2,25 @@ const capi = require('node-canvas-api') const { flatten } = require('./util') const writeToCSV = require('./writeToCSV') const writeSummaryToCSV = require('./writeSummaryToCSV') -require('dotenv').config(); +const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') +require('dotenv').config() -// Check for COURSE_IDS in environment variables -if (!process.env.COURSE_IDS) { - console.error('Error: COURSE_IDS environment variable is not defined.'); - process.exit(1); // Exit the script with a non-zero status +const checkEnvVariable = (varName, errMsg) => { + if (!process.env[varName]) { + if (varName === 'INCLUDE_MODULE_SUMMARY') { + console.info(`There was no INCLUDE_MODULE_SUMMARY set... assuming you do not want to summarize by module.`) + } else { + console.error(`Error: ${errMsg}. See README for an example.env`) + process.exit(1); // Exit the script with a non-zero status + } + } } +checkEnvVariable('COURSE_IDS', 'COURSE_IDS environment variable is not defined.') +checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. This should be true or false') +checkEnvVariable('CANVAS_API_TOKEN', 'CANVAS_API_TOKEN environment variable is not defined. You need a token to run this script.') +checkEnvVariable('CANVAS_API_DOMAIN', 'CANVAS_API_DOMAIN environment variable is not defined.') + const getDiscussionTopicIds = courseId => capi.getDiscussionTopics(courseId) .then(discussions => discussions.map(x => x.id)) @@ -34,54 +45,106 @@ const getNestedReplies = (replyObj, participants, topicId) => { }, ...replies] } +const getDiscussionsAndTopics = async (courseId, topicIds) => { + const discussionsAndTopics = await Promise.all( + topicIds.map(async topicId => { + const discussion = await capi.getFullDiscussion(courseId, topicId) + const topic = await capi.getDiscussionTopic(courseId, topicId) + return { discussion, topic } + }) + ) + return discussionsAndTopics +} + +const processDiscussionTopic = ({ discussion, topic }) => { + const topicId = topic.id + const topicTitle = topic.title + const topicMessage = topic.message + const author = topic.author + const topicCreatedAt = topic.created_at + const topicPostedAt = topic.posted_at + const participants = discussion.participants + const replies = discussion.view.length > 0 + ? discussion.view + .filter(x => !x.deleted) + .map(reply => getNestedReplies(reply, participants, topicId)) + : [] + + return { + topicId, + topicTitle, + topicMessage, + topicAuthorId: author.id || '', + topicAuthorName: author.display_name || '', + topicCreatedAt, + topicPostedAt, + replies + } +} + const getDiscussions = async courseId => { const discussionTopicIds = await getDiscussionTopicIds(courseId) - const discussionAndTopic = await Promise.all( - discussionTopicIds - .map(topicId => Promise.all([ - capi.getFullDiscussion(courseId, topicId), - capi.getDiscussionTopic(courseId, topicId) - ])) - ) - return discussionAndTopic.map(([discussion, topic]) => { - const topicId = topic.id - const topicTitle = topic.title - const topicMessage = topic.message - const author = topic.author - const topicCreatedAt = topic.created_at - const topicPostedAt = topic.posted_at - const participants = discussion.participants - const replies = discussion.view.length > 0 - ? discussion.view - .filter(x => !x.deleted) - .map(reply => getNestedReplies(reply, participants, topicId)) - : [] + const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionTopicIds) + + return discussionsAndTopics.map(processDiscussionTopic) +} + + +const getPublishedModuleDiscussions = async courseId => { + + const modules = await capi.getModules(courseId) + + const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { + const items = await capi.getModuleItems(courseId, module.id) + const discussionItems = items.filter(item => item.type === "Discussion" && item.published===true).flat() + + const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) + const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) + + const discussionItemWithDiscussionData = discussionItems.map(discussionItem => { + const discussionAndReplies = processedDiscussions.find(d => d.topicId === discussionItem.content_id) + return { + ...discussionItem, + discussionAndReplies + } + }) return { - topicId, - topicTitle, - topicMessage, - topicAuthorId: author.id || '', - topicAuthorName: author.display_name || '', - topicCreatedAt, - topicPostedAt, - replies + ...module, + discussionItems: discussionItemWithDiscussionData } - }) + })) + + + return modulesWithDiscussionItems + } -const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()); +const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) +const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false Promise.all( - courseIds.map(courseId => - getDiscussions(courseId).then(discussions => { - return Promise.all([ - writeToCSV(courseId, discussions), - writeSummaryToCSV(courseId, discussions) - ]); - }) - ) + courseIds.map(courseId => { + const promises = [ + getDiscussions(courseId).then(discussions => { + return Promise.all([ + writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV + writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV + ]) + }) + ] + + if (returnSummaryByModule) { + promises.push( + getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => { + return writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV + }) + ) + } + + return Promise.all(promises) + }) ).catch(error => { - const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}`; - console.error('Error processing discussions:', detailedErrorMessage); -}); \ No newline at end of file + const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}` + console.error('Error processing discussions and modules:', detailedErrorMessage) +}) diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js new file mode 100644 index 0000000..50c25f8 --- /dev/null +++ b/writeSummaryByModuleToCSV.js @@ -0,0 +1,86 @@ +const fs = require('fs') +const path = require('path') + +const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') + +// Function to calculate the module summary +const moduleSummary = (module) => { + const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() + //console.log(JSON.stringify(module, null, 3)) + //console.log(posts) + //const moduleCreatedAt = new Date(module.unlock_at || module.created_at) + const moduleUnlockedAt = new Date(module.unlock_at) + + const numberOfPosts = posts.length + const getWordCount = (str) => str.replace(/<\/?[^>]+(>|$)/g, "").trim().split(/\s+/).length + const wordCounts = posts.map(post => getWordCount(post.postMessage)) + const median = arr => { + const sorted = arr.slice().sort((a, b) => a - b) + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 + } + const medianWordCount = median(wordCounts) + + const timeDiffs = posts.map(post => (new Date(post.postTimestamp) - moduleUnlockedAt) / (1000 * 60 * 60)) + const averageTimeDiff = timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length + + const postCountsByAuthor = posts.reduce((acc, post) => { + acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 + return acc + }, {}) + const averagePostsPerAuthor = Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length + + const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) + const timeDiffsFromFirst = posts.map(post => (new Date(post.postTimestamp) - firstReplyTimestamp) / (1000 * 60 * 60)) + + const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 ? timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length : 0 + + return { + numberOfPosts, + medianWordCount, + averageTimeDiff, + firstReplyTimestamp, + averageTimeToPostFromFirst, + averagePostsPerAuthor + } +} + +// Function to write the summary to CSV +const writeSummaryByModuleToCSV = (courseId, modules) => { + console.log(`Writing summary of module discussion data for course: ${courseId}`) + const csvPath = path.join(__dirname, `output/${courseId}-module-discussion-summary.csv`) + const headers = [ + 'module_id', + 'module_name', + 'module_unlock_at', + 'number_of_posts', + 'median_word_count', + 'average_time_to_post_hours', + 'first_reply_timestamp', + 'average_time_to_post_from_first_hours', + 'average_posts_per_author' + ] + + writeHeader(csvPath, headers) + + modules.forEach(module => { + const summary = moduleSummary(module) + const moduleDetails = { + module_id: module.id, + module_name: stripHTML(escapeComment(module.name)), + module_created_at: module.unlock_at || module.created_at, + number_of_posts: summary.numberOfPosts, + median_word_count: summary.medianWordCount, + average_time_to_post_hours: summary.averageTimeDiff, + first_reply_timestamp: summary.firstReplyTimestamp, + average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, + average_posts_per_author: summary.averagePostsPerAuthor + } + appendRow(csvPath, Object.values(moduleDetails)) + }) +} + +module.exports = writeSummaryByModuleToCSV From bc814891fbddb840792e1cfc0d6e5e8526367f41 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Wed, 4 Sep 2024 12:57:20 -0700 Subject: [PATCH 08/54] REFACTOR - being refactor to util fns --- util.js | 29 ++++++++++++++++++++++++++++- writeSummaryByModuleToCSV.js | 16 ++++------------ writeSummaryToCSV.js | 30 ++++++++++++------------------ writeToCSV.js | 11 ++--------- 4 files changed, 46 insertions(+), 40 deletions(-) diff --git a/util.js b/util.js index 99b5fcd..8413e28 100644 --- a/util.js +++ b/util.js @@ -1,9 +1,36 @@ +const fs = require('fs') +const path = require('path') + const flatten = arr => arr.reduce((acc, cur) => Array.isArray(cur) ? [...acc, ...cur] : [...acc, cur] , []) +const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') + +// Word count function +const getWordCount = (str) => { + const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags + return cleanStr.trim().split(/\s+/).length +} + +// Median word count +const median = (arr) => { + const sorted = arr.slice().sort((a, b) => a - b) + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 +} + module.exports = { - flatten + flatten, + escapeComment, + stripHTML, + writeHeader, + appendRow, + getWordCount, + median } diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index 50c25f8..0d7aed2 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -1,10 +1,7 @@ -const fs = require('fs') -const path = require('path') -const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' -const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') -const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') +const path = require('path') +const { escapeComment, stripHTML, writeHeader, appendRow, + getWordCount, median } = require('./util') // Function to calculate the module summary const moduleSummary = (module) => { @@ -15,13 +12,8 @@ const moduleSummary = (module) => { const moduleUnlockedAt = new Date(module.unlock_at) const numberOfPosts = posts.length - const getWordCount = (str) => str.replace(/<\/?[^>]+(>|$)/g, "").trim().split(/\s+/).length const wordCounts = posts.map(post => getWordCount(post.postMessage)) - const median = arr => { - const sorted = arr.slice().sort((a, b) => a - b) - const mid = Math.floor(sorted.length / 2) - return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 - } + const medianWordCount = median(wordCounts) const timeDiffs = posts.map(post => (new Date(post.postTimestamp) - moduleUnlockedAt) / (1000 * 60 * 60)) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index b46b2e0..e0c9c3f 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -1,13 +1,7 @@ -const fs = require('fs') const path = require('path') +const { escapeComment, stripHTML, writeHeader, appendRow, + getWordCount, median } = require('./util') // Adjust the path as necessary -const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' - -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' - -const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') - -const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') // Function to calculate the topic summary const topicSummary = (topic) => { @@ -29,20 +23,20 @@ const topicSummary = (topic) => { } // Word count function - const getWordCount = (str) => { - const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags - return cleanStr.trim().split(/\s+/).length - } + // const getWordCount = (str) => { + // const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags + // return cleanStr.trim().split(/\s+/).length + // } // Word counts const wordCounts = posts.map(post => getWordCount(post.postMessage)) - // Median word count - const median = (arr) => { - const sorted = arr.slice().sort((a, b) => a - b) - const mid = Math.floor(sorted.length / 2) - return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 - } + // // Median word count + // const median = (arr) => { + // const sorted = arr.slice().sort((a, b) => a - b) + // const mid = Math.floor(sorted.length / 2) + // return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 + // } const medianWordCount = Math.round(median(wordCounts) * 10) / 10 // Average time in hours from topicCreatedAt to postTimestamp diff --git a/writeToCSV.js b/writeToCSV.js index 0b0e800..08c51e3 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,13 +1,6 @@ -const fs = require('fs'); -const path = require('path'); +const path = require('path') -const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' - -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' - -const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') - -const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') +const { escapeComment, stripHTML, writeHeader, appendRow } = require('./util') // Adjust the path as necessary const writeToCSV = (courseId, data) => { From 3e5dcfb9b030d08dd142231cfc69b9dca8b2bf47 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Wed, 4 Sep 2024 13:01:12 -0700 Subject: [PATCH 09/54] REFACTOR - use functions to clean wordcount string --- util.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util.js b/util.js index 8413e28..ebaa0b7 100644 --- a/util.js +++ b/util.js @@ -14,7 +14,8 @@ const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(', // Word count function const getWordCount = (str) => { - const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags + const cleanStr = stripHTML(escapeComment(str)) + //const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags return cleanStr.trim().split(/\s+/).length } From f57105ba295f6d0778f7744d3829e01769d12855 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Wed, 4 Sep 2024 13:01:52 -0700 Subject: [PATCH 10/54] REFACTOR - remove comments --- writeSummaryToCSV.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index e0c9c3f..cfff9a2 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -22,21 +22,10 @@ const topicSummary = (topic) => { } } - // Word count function - // const getWordCount = (str) => { - // const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags - // return cleanStr.trim().split(/\s+/).length - // } // Word counts const wordCounts = posts.map(post => getWordCount(post.postMessage)) - // // Median word count - // const median = (arr) => { - // const sorted = arr.slice().sort((a, b) => a - b) - // const mid = Math.floor(sorted.length / 2) - // return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 - // } const medianWordCount = Math.round(median(wordCounts) * 10) / 10 // Average time in hours from topicCreatedAt to postTimestamp From 4b7b3b63cf22239d6b7e2de9e1b851d8cb095a4d Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Wed, 4 Sep 2024 13:14:42 -0700 Subject: [PATCH 11/54] REFACTOR - extract postSummary to function in util --- util.js | 65 +++++++++++++++++++++++++++++++++++- writeSummaryByModuleToCSV.js | 34 ++----------------- writeSummaryToCSV.js | 63 ++-------------------------------- 3 files changed, 70 insertions(+), 92 deletions(-) diff --git a/util.js b/util.js index ebaa0b7..f64c3b6 100644 --- a/util.js +++ b/util.js @@ -26,6 +26,68 @@ const median = (arr) => { return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 } +// Function to calculate the topic summary +const postStatistics = (posts, useForTimestampDiff) => { + // Number of posts + const numberOfPosts = posts.length + + if (numberOfPosts === 0) { + return { + numberOfPosts: 0, + medianWordCount: 0, + averageTimeDiff: 0, + firstReplyTimestamp: 0, + averageTimeToPostFromFirst: 0, + averagePostsPerAuthor: 0 + } + } + + + // Word counts + const wordCounts = posts.map(post => getWordCount(post.postMessage)) + + const medianWordCount = Math.round(median(wordCounts) * 10) / 10 + + // Average time in hours from topicCreatedAt to postTimestamp + const timeDiffs = posts.map(post => { + const postTimestamp = new Date(post.postTimestamp) + return (postTimestamp - useForTimestampDiff) / (1000 * 60 * 60) // Convert from milliseconds to hours + }) + + const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 + + // Average number of posts per postAuthorId + const postCountsByAuthor = posts.reduce((acc, post) => { + acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 + return acc + }, {}) + const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 + + + const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) + const timeDiffsFromFirst = posts + .map(post => { + const postTimestamp = new Date(post.postTimestamp) + return postTimestamp > firstReplyTimestamp + ? (postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours + : null + }) + .filter(diff => diff !== null) + + const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 + ? Math.round((timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length) * 10) / 10 + : 0 + + return { + numberOfPosts, + medianWordCount, + averageTimeDiff, + firstReplyTimestamp, + averageTimeToPostFromFirst, + averagePostsPerAuthor + } + +} module.exports = { flatten, escapeComment, @@ -33,5 +95,6 @@ module.exports = { writeHeader, appendRow, getWordCount, - median + median, + postStatistics } diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index 0d7aed2..efecbda 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -1,43 +1,15 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, - getWordCount, median } = require('./util') +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics } = require('./util') // Adjust the path as necessary // Function to calculate the module summary const moduleSummary = (module) => { const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() - //console.log(JSON.stringify(module, null, 3)) - //console.log(posts) - //const moduleCreatedAt = new Date(module.unlock_at || module.created_at) const moduleUnlockedAt = new Date(module.unlock_at) - const numberOfPosts = posts.length - const wordCounts = posts.map(post => getWordCount(post.postMessage)) + const postSummary = postStatistics(posts, moduleUnlockedAt) - const medianWordCount = median(wordCounts) - - const timeDiffs = posts.map(post => (new Date(post.postTimestamp) - moduleUnlockedAt) / (1000 * 60 * 60)) - const averageTimeDiff = timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length - - const postCountsByAuthor = posts.reduce((acc, post) => { - acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 - return acc - }, {}) - const averagePostsPerAuthor = Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length - - const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) - const timeDiffsFromFirst = posts.map(post => (new Date(post.postTimestamp) - firstReplyTimestamp) / (1000 * 60 * 60)) - - const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 ? timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length : 0 - - return { - numberOfPosts, - medianWordCount, - averageTimeDiff, - firstReplyTimestamp, - averageTimeToPostFromFirst, - averagePostsPerAuthor - } + return postSummary } // Function to write the summary to CSV diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index cfff9a2..75974a9 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -1,71 +1,14 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, - getWordCount, median } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics } = require('./util') // Adjust the path as necessary - -// Function to calculate the topic summary const topicSummary = (topic) => { const posts = topic.replies.flat() const topicCreatedAt = new Date(topic.topicCreatedAt) - // Number of posts - const numberOfPosts = posts.length - - if (numberOfPosts === 0) { - return { - numberOfPosts: 0, - medianWordCount: 0, - averageTimeDiff: 0, - firstReplyTimestamp: 0, - averageTimeToPostFromFirst: 0, - averagePostsPerAuthor: 0 - } - } - - - // Word counts - const wordCounts = posts.map(post => getWordCount(post.postMessage)) - - const medianWordCount = Math.round(median(wordCounts) * 10) / 10 - - // Average time in hours from topicCreatedAt to postTimestamp - const timeDiffs = posts.map(post => { - const postTimestamp = new Date(post.postTimestamp) - return (postTimestamp - topicCreatedAt) / (1000 * 60 * 60) // Convert from milliseconds to hours - }) - - const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 + const postSummary = postStatistics(posts, topicCreatedAt) - // Average number of posts per postAuthorId - const postCountsByAuthor = posts.reduce((acc, post) => { - acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 - return acc - }, {}) - const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 + return postSummary - - const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) - const timeDiffsFromFirst = posts - .map(post => { - const postTimestamp = new Date(post.postTimestamp) - return postTimestamp > firstReplyTimestamp - ? (postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours - : null - }) - .filter(diff => diff !== null) - - const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 - ? Math.round((timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length) * 10) / 10 - : 0 - - return { - numberOfPosts, - medianWordCount, - averageTimeDiff, - firstReplyTimestamp, - averageTimeToPostFromFirst, - averagePostsPerAuthor - } } // Function to write the summary to CSV From 6bacf282f0209df38177f83198203ff5acdfe932 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:19:38 -0700 Subject: [PATCH 12/54] resolve spacing issue --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 56fb220..98011c0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ # Canvas Discussion ### Data -> `{course_id}-discussion.csv` +> `{course_id}-discussion.csv` + This project pulls data via the Canvas API the discussions for the specified Canvas course(s) and exports the results as CSV. The columns exported are: * 'topic_id', * 'topic_title', From 218563d9426dc464371f3ea6b5f0fc76408922a8 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:20:45 -0700 Subject: [PATCH 13/54] fix numbering --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 98011c0..8406aa6 100644 --- a/README.md +++ b/README.md @@ -88,8 +88,8 @@ These instructions will get you a copy of the project up and running on your loc COURSE_IDS=1111,1112 INCLUDE_MODULE_SUMMARY=false ``` -2. Run the script. `npm start`. -3. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. +1. Run the script. `npm start`. +1. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. ## Authors From f75da75222ad21fd7efda773c8807678857032f6 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:21:55 -0700 Subject: [PATCH 14/54] mention all files created --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8406aa6..40b82c4 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ These instructions will get you a copy of the project up and running on your loc INCLUDE_MODULE_SUMMARY=false ``` 1. Run the script. `npm start`. -1. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. +1. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id. If you have set `INCLUDE_MODULE_SUMMARY` to `true` then you will also see a file `{course_id}-module-discussion-summary.csv`. ## Authors From 917b2fa37491642da9bfe9e83e50f698c3ffbbcc Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:26:08 -0700 Subject: [PATCH 15/54] create warning and error helpers --- index.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index b2754c2..b3cab7b 100644 --- a/index.js +++ b/index.js @@ -5,19 +5,26 @@ const writeSummaryToCSV = require('./writeSummaryToCSV') const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') require('dotenv').config() +const envVariableWarning = (msg) => { + console.info(msg) +} +const envVariableError = (msg) => { + console.error(msg) + process.exit(1) + +} const checkEnvVariable = (varName, errMsg) => { if (!process.env[varName]) { if (varName === 'INCLUDE_MODULE_SUMMARY') { - console.info(`There was no INCLUDE_MODULE_SUMMARY set... assuming you do not want to summarize by module.`) + envVariableWarning(errMsg) } else { - console.error(`Error: ${errMsg}. See README for an example.env`) - process.exit(1); // Exit the script with a non-zero status + envVariableError(`Error: ${errMsg}. See README for an example.env`) } } } checkEnvVariable('COURSE_IDS', 'COURSE_IDS environment variable is not defined.') -checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. This should be true or false') +checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. Define and set to `true` to include summary at module.') checkEnvVariable('CANVAS_API_TOKEN', 'CANVAS_API_TOKEN environment variable is not defined. You need a token to run this script.') checkEnvVariable('CANVAS_API_DOMAIN', 'CANVAS_API_DOMAIN environment variable is not defined.') From 377b83355fb1f7d28183d2339935b330676bacfe Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:33:23 -0700 Subject: [PATCH 16/54] add comments and remove uneccessary exports --- index.js | 4 ++-- util.js | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index b3cab7b..7b78f21 100644 --- a/index.js +++ b/index.js @@ -81,8 +81,8 @@ const processDiscussionTopic = ({ discussion, topic }) => { topicId, topicTitle, topicMessage, - topicAuthorId: author.id || '', - topicAuthorName: author.display_name || '', + topicAuthorId: author.id || '', // the topic author id can be null + topicAuthorName: author.display_name || '', // the topic author can be null topicCreatedAt, topicPostedAt, replies diff --git a/util.js b/util.js index f64c3b6..3e7e4a1 100644 --- a/util.js +++ b/util.js @@ -94,7 +94,5 @@ module.exports = { stripHTML, writeHeader, appendRow, - getWordCount, - median, postStatistics } From 3474f6b2d0ca716e6ea9485493ac277579634558 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:35:00 -0700 Subject: [PATCH 17/54] remove trailing spaces --- writeToCSV.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/writeToCSV.js b/writeToCSV.js index 08c51e3..2e95980 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -9,19 +9,19 @@ const writeToCSV = (courseId, data) => { const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) const headers =[ - 'topic_id', - 'topic_title', - 'topic_message', + 'topic_id', + 'topic_title', + 'topic_message', 'topic_author_id', - 'topic_author_name', - 'topic_created_at', + 'topic_author_name', + 'topic_created_at', 'topic_posted_at', 'post_author_id', - 'post_author_name', - 'post_id', - 'post_parent_id', + 'post_author_name', + 'post_id', + 'post_parent_id', 'post_message', - 'post_likes', + 'post_likes', 'post_timestamp' ] From a09c4ed339872f8443629df4f0f09bff8234e91e Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:37:12 -0700 Subject: [PATCH 18/54] move comment to appropriate place --- util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util.js b/util.js index 3e7e4a1..84d9377 100644 --- a/util.js +++ b/util.js @@ -56,11 +56,11 @@ const postStatistics = (posts, useForTimestampDiff) => { const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 - // Average number of posts per postAuthorId const postCountsByAuthor = posts.reduce((acc, post) => { acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 return acc }, {}) + // Average number of posts per postAuthorId const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 From fe6889001d9f56de1fe9d1f8a3405032b4b658b7 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:40:16 -0700 Subject: [PATCH 19/54] use more meaningful name --- util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util.js b/util.js index 84d9377..ead4592 100644 --- a/util.js +++ b/util.js @@ -27,7 +27,7 @@ const median = (arr) => { } // Function to calculate the topic summary -const postStatistics = (posts, useForTimestampDiff) => { +const postStatistics = (posts, referenceTimestamp) => { // Number of posts const numberOfPosts = posts.length @@ -51,7 +51,7 @@ const postStatistics = (posts, useForTimestampDiff) => { // Average time in hours from topicCreatedAt to postTimestamp const timeDiffs = posts.map(post => { const postTimestamp = new Date(post.postTimestamp) - return (postTimestamp - useForTimestampDiff) / (1000 * 60 * 60) // Convert from milliseconds to hours + return (postTimestamp - referenceTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours }) const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 From c1a20cfccc613b75dfcd20d22377d91fd8c56126 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:46:13 -0700 Subject: [PATCH 20/54] resolve header comments --- util.js | 2 +- writeToCSV.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/util.js b/util.js index ead4592..4a5aa2c 100644 --- a/util.js +++ b/util.js @@ -9,7 +9,7 @@ const flatten = arr => arr.reduce((acc, cur) => const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' -const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers.join(',') + '\r\n') +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') // Word count function diff --git a/writeToCSV.js b/writeToCSV.js index 2e95980..3176fc6 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -26,7 +26,7 @@ const writeToCSV = (courseId, data) => { ] // Write the headers to the CSV file - writeHeader(csvPath, Array.from(headers)) + writeHeader(csvPath, headers) data.forEach(discussion => { const topicDetails = { From 6dbbc45bef2e99f5e8a92de45edf74b88bba9835 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:51:15 -0700 Subject: [PATCH 21/54] fix async and await of apis so not sequential --- index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 7b78f21..8f378be 100644 --- a/index.js +++ b/index.js @@ -53,13 +53,18 @@ const getNestedReplies = (replyObj, participants, topicId) => { } const getDiscussionsAndTopics = async (courseId, topicIds) => { + const fetchDetails = topicId => Promise.all([ + capi.getFullDiscussion(courseId, topicId), + capi.getDiscussionTopic(courseId, topicId), + ]) + const discussionsAndTopics = await Promise.all( topicIds.map(async topicId => { - const discussion = await capi.getFullDiscussion(courseId, topicId) - const topic = await capi.getDiscussionTopic(courseId, topicId) + const [discussion, topic] = await fetchDetails(topicId) return { discussion, topic } }) ) + return discussionsAndTopics } From 8ae0b7e4eab672c7e8e439ac3b10df27db0f03d5 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 14:58:18 -0700 Subject: [PATCH 22/54] dont need flat --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 8f378be..a47eb22 100644 --- a/index.js +++ b/index.js @@ -108,7 +108,7 @@ const getPublishedModuleDiscussions = async courseId => { const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { const items = await capi.getModuleItems(courseId, module.id) - const discussionItems = items.filter(item => item.type === "Discussion" && item.published===true).flat() + const discussionItems = items.filter(item => item.type === "Discussion" && item.published) const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) From ea97af8bcc52a6c45d55c5ff5f87db0aa3988dc5 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 15:06:59 -0700 Subject: [PATCH 23/54] create conditional promise --- index.js | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/index.js b/index.js index a47eb22..c306de6 100644 --- a/index.js +++ b/index.js @@ -135,28 +135,24 @@ const getPublishedModuleDiscussions = async courseId => { const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false + Promise.all( courseIds.map(courseId => { - const promises = [ - getDiscussions(courseId).then(discussions => { - return Promise.all([ - writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV - writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV - ]) - }) - ] - - if (returnSummaryByModule) { - promises.push( - getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => { - return writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV - }) - ) - } - - return Promise.all(promises) + const basePromise = getDiscussions(courseId).then(discussions => + Promise.all([ + writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV + writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV + ]) + ) + + const additionalPromise = returnSummaryByModule + ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => + writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV + ) + : Promise.resolve() // No additional operation if condition is false + + return Promise.all([basePromise, additionalPromise]) }) ).catch(error => { - const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}` - console.error('Error processing discussions and modules:', detailedErrorMessage) -}) + console.error('Error processing discussions and modules:', error.message || `An unexpected error occurred: ${error}`) +}) \ No newline at end of file From daf6375fdb495586465b4d13da33ea1b2ecad0ab Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 15:07:52 -0700 Subject: [PATCH 24/54] rm white space --- index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.js b/index.js index c306de6..3adce7a 100644 --- a/index.js +++ b/index.js @@ -127,7 +127,6 @@ const getPublishedModuleDiscussions = async courseId => { } })) - return modulesWithDiscussionItems } @@ -135,7 +134,6 @@ const getPublishedModuleDiscussions = async courseId => { const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false - Promise.all( courseIds.map(courseId => { const basePromise = getDiscussions(courseId).then(discussions => From 250552a02c266991534cdc5a135b25e6f0359c44 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 15:11:00 -0700 Subject: [PATCH 25/54] remove sort comparison --- util.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/util.js b/util.js index 4a5aa2c..67caef1 100644 --- a/util.js +++ b/util.js @@ -21,7 +21,7 @@ const getWordCount = (str) => { // Median word count const median = (arr) => { - const sorted = arr.slice().sort((a, b) => a - b) + const sorted = arr.slice().sort() const mid = Math.floor(sorted.length / 2) return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 } @@ -35,14 +35,13 @@ const postStatistics = (posts, referenceTimestamp) => { return { numberOfPosts: 0, medianWordCount: 0, - averageTimeDiff: 0, - firstReplyTimestamp: 0, - averageTimeToPostFromFirst: 0, - averagePostsPerAuthor: 0 + averageTimeDiff: null, + firstReplyTimestamp: null, + averageTimeToPostFromFirst: null, + averagePostsPerAuthor: null } } - // Word counts const wordCounts = posts.map(post => getWordCount(post.postMessage)) From 60ef913c8e91f33fccc1e1cfcc8e193298fa82aa Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 15:21:42 -0700 Subject: [PATCH 26/54] address refactor comments --- index.js | 2 +- util.js | 34 ++++++++++++++++++++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 3adce7a..5120596 100644 --- a/index.js +++ b/index.js @@ -46,7 +46,7 @@ const getNestedReplies = (replyObj, participants, topicId) => { postAuthorName: authorName, postMessage: replyObj.message, postLikes: replyObj.rating_sum || 0, - postTimestamp: replyObj.created_at, + postTimestamp: new Date(replyObj.created_at), postParentId: replyObj.parent_id || '', postId: replyObj.id }, ...replies] diff --git a/util.js b/util.js index 67caef1..750c370 100644 --- a/util.js +++ b/util.js @@ -7,6 +7,19 @@ const flatten = arr => arr.reduce((acc, cur) => : [...acc, cur] , []) +const average = (arr) => { + if (arr.length === 0) return 0 + const sum = arr.reduce((acc, curr) => acc + curr, 0) + return sum / arr.length +} + +// median from array +const median = (arr) => { + const sorted = arr.slice().sort() + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 +} + const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') @@ -19,13 +32,6 @@ const getWordCount = (str) => { return cleanStr.trim().split(/\s+/).length } -// Median word count -const median = (arr) => { - const sorted = arr.slice().sort() - const mid = Math.floor(sorted.length / 2) - return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 -} - // Function to calculate the topic summary const postStatistics = (posts, referenceTimestamp) => { // Number of posts @@ -49,32 +55,32 @@ const postStatistics = (posts, referenceTimestamp) => { // Average time in hours from topicCreatedAt to postTimestamp const timeDiffs = posts.map(post => { - const postTimestamp = new Date(post.postTimestamp) - return (postTimestamp - referenceTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours + return (post.postTimestamp - referenceTimestamp) }) - const averageTimeDiff = Math.round((timeDiffs.reduce((acc, curr) => acc + curr, 0) / timeDiffs.length) * 10) / 10 + const averageTimeDiff = parseFloat(average(timeDiffs).toFixed(1)) / (1000 * 60 * 60) // Convert from milliseconds to hours const postCountsByAuthor = posts.reduce((acc, post) => { acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 return acc }, {}) // Average number of posts per postAuthorId - const averagePostsPerAuthor = Math.round((Object.values(postCountsByAuthor).reduce((acc, curr) => acc + curr, 0) / Object.keys(postCountsByAuthor).length) * 10) / 10 + const postCounts = Object.values(postCountsByAuthor) + const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) + const timeDiffsFromFirst = posts .map(post => { - const postTimestamp = new Date(post.postTimestamp) - return postTimestamp > firstReplyTimestamp + return post.postTimestamp > firstReplyTimestamp ? (postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours : null }) .filter(diff => diff !== null) const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 - ? Math.round((timeDiffsFromFirst.reduce((acc, curr) => acc + curr, 0) / timeDiffsFromFirst.length) * 10) / 10 + ? parseFloat(average(timeDiffsFromFirst).toFixed(1)) : 0 return { From 8090eede9a0ac0ca16645df98f5d296cb7374dc9 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Thu, 12 Sep 2024 16:00:49 -0700 Subject: [PATCH 27/54] update timestamps and associated functions --- index.js | 4 +- package-lock.json | 2687 ++++++++++++++++++++++++---------- package.json | 1 + util.js | 16 +- writeSummaryByModuleToCSV.js | 6 +- writeSummaryToCSV.js | 8 +- writeToCSV.js | 8 +- 7 files changed, 1981 insertions(+), 749 deletions(-) diff --git a/index.js b/index.js index 5120596..8af730a 100644 --- a/index.js +++ b/index.js @@ -73,8 +73,8 @@ const processDiscussionTopic = ({ discussion, topic }) => { const topicTitle = topic.title const topicMessage = topic.message const author = topic.author - const topicCreatedAt = topic.created_at - const topicPostedAt = topic.posted_at + const topicCreatedAt = new Date(topic.created_at) + const topicPostedAt = new Date(topic.posted_at) const participants = discussion.participants const replies = discussion.view.length > 0 ? discussion.view diff --git a/package-lock.json b/package-lock.json index 32abbcc..0a33ad1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "luxon": "^3.5.0", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } @@ -18,6 +19,7 @@ "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -26,17 +28,19 @@ } }, "node_modules/acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { - "acorn": "^6.0.0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -49,33 +53,28 @@ } }, "node_modules/ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, "node_modules/ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -84,26 +83,74 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -111,7 +158,8 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -119,25 +167,44 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "license": "MIT", "dependencies": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -147,7 +214,8 @@ "node_modules/babel-code-frame/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -155,7 +223,8 @@ "node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -163,7 +232,8 @@ "node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -175,15 +245,11 @@ "node": ">=0.10.0" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, "node_modules/babel-code-frame/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -194,20 +260,23 @@ "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -215,26 +284,49 @@ "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "license": "MIT", "dependencies": { "callsites": "^0.2.0" }, @@ -242,10 +334,11 @@ "node": ">=0.10.0" } }, - "node_modules/caller-path/node_modules/callsites": { + "node_modules/callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -253,36 +346,27 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" }, "node_modules/chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "license": "MIT" }, "node_modules/circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor." + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "license": "MIT" }, "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -291,27 +375,16 @@ } }, "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "license": "ISC" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -322,12 +395,14 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/config": { "version": "1.31.0", "resolved": "https://registry.npmjs.org/config/-/config-1.31.0.tgz", "integrity": "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==", + "license": "MIT", "dependencies": { "json5": "^1.0.1" }, @@ -338,7 +413,8 @@ "node_modules/contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -346,12 +422,14 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -366,7 +444,8 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -374,42 +453,111 @@ "node": ">=0.10" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "license": "ISC", "dependencies": { "find-root": "^1.0.0", "glob": "^7.0.5", @@ -422,12 +570,14 @@ "node_modules/deglob/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "license": "MIT" }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -436,6 +586,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -447,6 +598,7 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -457,7 +609,8 @@ "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -467,30 +620,123 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -498,12 +744,16 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -512,6 +762,7 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "license": "MIT", "dependencies": { "ajv": "^6.5.0", "babel-code-frame": "^6.26.0", @@ -563,6 +814,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0", "eslint-plugin-import": ">=2.13.0", @@ -575,102 +827,65 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0", "eslint-plugin-react": ">=7.11.1" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", - "dependencies": { - "debug": "^2.6.9", - "resolve": "^1.5.0" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz", - "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", "dependencies": { - "debug": "^2.6.8", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz", - "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "license": "MIT", "dependencies": { - "eslint-utils": "^1.3.0", + "eslint-utils": "^1.4.2", "regexpp": "^2.0.1" }, "engines": { @@ -684,6 +899,7 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "license": "MIT", "dependencies": { "contains-path": "^0.1.0", "debug": "^2.6.8", @@ -703,10 +919,19 @@ "eslint": "2.x - 5.x" } }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", "dependencies": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -715,151 +940,43 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/eslint-plugin-import/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/load-json-file": { + "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", - "dependencies": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, "node_modules/eslint-plugin-promise": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "license": "ISC", "engines": { "node": ">=6" } @@ -868,6 +985,7 @@ "version": "7.11.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "license": "MIT", "dependencies": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", @@ -883,9 +1001,24 @@ } }, "node_modules/eslint-plugin-standard": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", - "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } @@ -894,6 +1027,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -906,6 +1040,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -913,50 +1048,81 @@ "node": ">=6" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", "engines": { "node": ">=4" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { "node": ">=4" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/eslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { "node": ">=4" } }, + "node_modules/eslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, "node_modules/eslint/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint/node_modules/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==" + "node_modules/eslint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/eslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { "node": ">=4" @@ -966,6 +1132,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "license": "BSD-2-Clause", "dependencies": { "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", @@ -979,6 +1146,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -988,39 +1156,61 @@ } }, "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", "dependencies": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1028,12 +1218,14 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/external-editor": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "license": "MIT", "dependencies": { "chardet": "^0.4.0", "iconv-lite": "^0.4.17", @@ -1046,25 +1238,35 @@ "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" }, "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -1075,7 +1277,8 @@ "node_modules/file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "license": "MIT", "dependencies": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" @@ -1087,12 +1290,26 @@ "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "license": "MIT", "dependencies": { "circular-json": "^0.3.1", "graceful-fs": "^4.1.2", @@ -1103,10 +1320,20 @@ "node": ">=0.10.0" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1115,6 +1342,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1127,67 +1355,174 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/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=" + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", "engines": { "node": ">=4" } @@ -1197,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", + "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -1206,12 +1542,10 @@ } }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -1219,7 +1553,8 @@ "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -1230,23 +1565,80 @@ "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { "node": ">= 0.4" } @@ -1254,12 +1646,14 @@ "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1274,6 +1668,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1285,6 +1680,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -1292,7 +1688,8 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -1300,21 +1697,25 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/inquirer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "license": "MIT", "dependencies": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", @@ -1334,115 +1735,354 @@ "node": ">=6.0.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "license": "ISC" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "node_modules/is-regex": { + "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", "dependencies": { - "has": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1454,37 +2094,44 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -1493,32 +2140,28 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.4.0", "verror": "1.10.0" }, - "dependencies": { - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - } + "engines": { + "node": ">=0.6.0" } }, "node_modules/jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "license": "MIT", "dependencies": { - "array-includes": "^3.0.3" + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" }, "engines": { "node": ">=4.0" @@ -1528,6 +2171,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } @@ -1535,7 +2179,8 @@ "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -1545,28 +2190,44 @@ } }, "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", + "parse-json": "^2.2.0", + "pify": "^2.0.0", "strip-bom": "^3.0.0" }, "engines": { "node": ">=4" } }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -1574,29 +2235,50 @@ "loose-envify": "cli.js" } }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1605,45 +2287,55 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "license": "ISC" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" }, "node_modules/node-canvas-api": { "version": "1.7.6", "resolved": "https://registry.npmjs.org/node-canvas-api/-/node-canvas-api-1.7.6.tgz", "integrity": "sha512-FVW9GMDYad7taFM/DeD3TCBt8znjEzyRa6hkvIefamnFhVVA15yiryOM2Fi1cjAqZNNu4quvCEYOj4nETDpprQ==", + "license": "MIT", "dependencies": { "bottleneck": "^2.19.4", "config": "^1.31.0", @@ -1659,6 +2351,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", "integrity": "sha512-XcaMACOr3JMVcEv0Y/iUM2XaOsATRZ3U1In41/1jjK6vJZ2PZbQ1bzCG8uvaByfaBpl9gqc9QWJovpUGBXLLYQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.6.0" } @@ -1667,6 +2360,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1678,6 +2372,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1685,23 +2380,56 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -1709,7 +2437,8 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -1717,59 +2446,82 @@ "node": ">=4" } }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/optionator/node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" }, "engines": { "node": ">=4" } }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse-link-header": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", + "license": "MIT", "dependencies": { "xtend": "~4.0.1" } @@ -1777,7 +2529,8 @@ "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1785,7 +2538,8 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1793,12 +2547,14 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1806,25 +2562,41 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" }, "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" @@ -1833,55 +2605,39 @@ "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/pkg-conf/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/pkg-conf/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/pkg-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1889,7 +2645,8 @@ "node_modules/pkg-config": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", + "license": "MIT", "dependencies": { "debug-log": "^1.0.0", "find-root": "^1.0.0", @@ -1903,14 +2660,24 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { "node": ">= 0.8.0" } @@ -1919,6 +2686,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -1927,6 +2695,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -1936,50 +2705,122 @@ } }, "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/ramda": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "license": "MIT" }, "node_modules/react-is": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", - "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "license": "MIT", "engines": { "node": ">=6.5.0" } @@ -1989,6 +2830,7 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2020,6 +2862,7 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "license": "ISC", "dependencies": { "bluebird": "^3.5.0", "request-promise-core": "1.1.4", @@ -2037,6 +2880,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "license": "ISC", "dependencies": { "lodash": "^4.17.19" }, @@ -2047,10 +2891,21 @@ "request": "^2.34" } }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "license": "MIT", "dependencies": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" @@ -2059,26 +2914,37 @@ "node": ">=0.10.0" } }, - "node_modules/require-uncached/node_modules/resolve-from": { + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dependencies": { - "path-parse": "^1.0.6" - } - }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -2091,6 +2957,8 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2099,36 +2967,18 @@ } }, "node_modules/run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dependencies": { - "is-promise": "^2.1.0" - }, + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" - }, - "node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -2142,25 +2992,117 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "license": "Apache-2.0", + "dependencies": { + "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -2171,25 +3113,47 @@ "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0" }, @@ -2198,42 +3162,48 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2258,6 +3228,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "license": "MIT", "dependencies": { "eslint": "~5.4.0", "eslint-config-standard": "12.0.0", @@ -2280,6 +3251,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "license": "MIT", "dependencies": { "deglob": "^2.1.0", "get-stdin": "^6.0.0", @@ -2290,7 +3262,8 @@ "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "license": "ISC", "engines": { "node": ">=0.10.0" } @@ -2299,6 +3272,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -2307,18 +3281,60 @@ "node": ">=4" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string-width/node_modules/strip-ansi": { + "node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -2329,7 +3345,8 @@ "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2337,26 +3354,29 @@ "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2365,6 +3385,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "license": "BSD-3-Clause", "dependencies": { "ajv": "^6.0.1", "ajv-keywords": "^3.0.0", @@ -2377,20 +3398,85 @@ "node": ">=4.0.0" } }, + "node_modules/table/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/table/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/table/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -2402,6 +3488,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -2413,7 +3500,8 @@ "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -2424,12 +3512,14 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -2437,32 +3527,114 @@ "node": ">= 0.8.0" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "license": "MIT" }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -2471,10 +3643,11 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -2485,6 +3658,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2492,15 +3666,61 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "license": "MIT", "dependencies": { "mkdirp": "^0.5.1" }, @@ -2509,9 +3729,10 @@ } }, "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } diff --git a/package.json b/package.json index 07862e9..feb343a 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "luxon": "^3.5.0", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } diff --git a/util.js b/util.js index 750c370..9cbd364 100644 --- a/util.js +++ b/util.js @@ -1,5 +1,13 @@ const fs = require('fs') const path = require('path') +const { DateTime } = require('luxon') + +const toPacificTimeString = (date) => + date + ? DateTime.fromJSDate(date, { zone: 'utc' }) // Convert JS Date to Luxon DateTime in UTC + .setZone('America/Los_Angeles') // Convert to Pacific Time + .toFormat('yyyy-MM-dd HH:mm:ss ZZZZ') // Format the DateTime object + : null const flatten = arr => arr.reduce((acc, cur) => Array.isArray(cur) @@ -69,12 +77,13 @@ const postStatistics = (posts, referenceTimestamp) => { const postCounts = Object.values(postCountsByAuthor) const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) - const firstReplyTimestamp = new Date(Math.min(...posts.map(post => new Date(post.postTimestamp)))) + const firstReplyTimestamp = new Date(Math.min(...posts.map( + post => new Date(post.postTimestamp)))) const timeDiffsFromFirst = posts .map(post => { return post.postTimestamp > firstReplyTimestamp - ? (postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours + ? (post.postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours : null }) .filter(diff => diff !== null) @@ -99,5 +108,6 @@ module.exports = { stripHTML, writeHeader, appendRow, - postStatistics + postStatistics, + toPacificTimeString } diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index efecbda..0c1ab18 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -1,6 +1,6 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Function to calculate the module summary const moduleSummary = (module) => { @@ -35,11 +35,11 @@ const writeSummaryByModuleToCSV = (courseId, modules) => { const moduleDetails = { module_id: module.id, module_name: stripHTML(escapeComment(module.name)), - module_created_at: module.unlock_at || module.created_at, + module_created_at: toPacificTimeString(module.unlock_at) || toPacificTimeString(module.created_at), number_of_posts: summary.numberOfPosts, median_word_count: summary.medianWordCount, average_time_to_post_hours: summary.averageTimeDiff, - first_reply_timestamp: summary.firstReplyTimestamp, + first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, average_posts_per_author: summary.averagePostsPerAuthor } diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 75974a9..490f2ca 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -1,5 +1,5 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Adjust the path as necessary const topicSummary = (topic) => { const posts = topic.replies.flat() @@ -45,12 +45,12 @@ const writeSummaryToCSV = (courseId, data) => { //topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_created_at: discussion.topicCreatedAt, - topic_posted_at: discussion.topicPostedAt, + topic_created_at: toPacificTimeString(discussion.topicCreatedAt), + topic_posted_at: toPacificTimeString(discussion.topicPostedAt), number_of_posts: summary.numberOfPosts, median_posts_word_count: summary.medianWordCount, average_time_to_post_hours: summary.averageTimeDiff, - first_reply_timestamp: summary.firstReplyTimestamp, + first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), average_time_to_post_from_first_reply_hours: summary.averageTimeToPostFromFirst, average_posts_per_author: summary.averagePostsPerAuthor } diff --git a/writeToCSV.js b/writeToCSV.js index 3176fc6..e5c27d9 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,6 +1,6 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString} = require('./util') // Adjust the path as necessary const writeToCSV = (courseId, data) => { @@ -35,8 +35,8 @@ const writeToCSV = (courseId, data) => { topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_created_at: discussion.topicCreatedAt, - topic_posted_at: discussion.topicPostedAt + topic_created_at: toPacificTimeString(discussion.topicCreatedAt), + topic_posted_at: toPacificTimeString(discussion.topicPostedAt) }; if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { @@ -49,7 +49,7 @@ const writeToCSV = (courseId, data) => { post_parent_id: post.postParentId, post_message: stripHTML(escapeComment(post.postMessage)), post_likes: post.postLikes, - post_timestamp: post.postTimestamp + post_timestamp: toPacificTimeString(post.postTimestamp) }; appendRow(csvPath, Object.values(postDetails)) }) From 49c86d49672b5396d217b0898b3be43aed4e805a Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:05:27 -0700 Subject: [PATCH 28/54] return null if not posted_at instead of 1969 date --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 8af730a..7b53989 100644 --- a/index.js +++ b/index.js @@ -73,8 +73,8 @@ const processDiscussionTopic = ({ discussion, topic }) => { const topicTitle = topic.title const topicMessage = topic.message const author = topic.author - const topicCreatedAt = new Date(topic.created_at) - const topicPostedAt = new Date(topic.posted_at) + const topicCreatedAt = topic.created_at ? new Date(topic.created_at) : null + const topicPostedAt = topic.posted_at ? new Date(topic.posted_at) : null const participants = discussion.participants const replies = discussion.view.length > 0 ? discussion.view From 3dea57c6af5ff8017188b98064bc3992c03a4fb7 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:12:50 -0700 Subject: [PATCH 29/54] install natural and use for wordcount --- package-lock.json | 857 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + util.js | 7 +- 3 files changed, 864 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 0a33ad1..7c18c7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,94 @@ "dependencies": { "dotenv": "^16.4.5", "luxon": "^3.5.0", + "natural": "^8.0.1", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", + "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", + "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, "node_modules/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", @@ -36,6 +120,26 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/afinn-165": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz", + "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/afinn-165-financialmarketnews": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/afinn-165-financialmarketnews/-/afinn-165-financialmarketnews-3.0.0.tgz", + "integrity": "sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -79,6 +183,33 @@ "node": ">=4" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/apparatus": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz", + "integrity": "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==", + "license": "MIT", + "dependencies": { + "sylvester": ">= 0.0.8" + }, + "engines": { + "node": ">=0.2.6" + } + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -164,6 +295,15 @@ "node": ">=0.8" } }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -272,6 +412,18 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -303,6 +455,15 @@ "concat-map": "0.0.1" } }, + "node_modules/bson": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -349,6 +510,22 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "license": "Apache-2.0" }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -380,6 +557,33 @@ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "license": "ISC" }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -425,6 +629,15 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -504,6 +717,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", @@ -1215,6 +1445,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1320,6 +1556,26 @@ "node": ">=0.10.0" } }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1400,6 +1656,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -1580,6 +1845,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -1643,12 +1917,74 @@ "node": ">= 0.4" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "license": "ISC" }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -2167,6 +2503,15 @@ "node": ">=4.0" } }, + "node_modules/kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -2244,6 +2589,33 @@ "node": ">=12" } }, + "node_modules/memjs": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/memjs/-/memjs-1.3.2.tgz", + "integrity": "sha512-qUEg2g8vxPe+zPn09KidjIStHPtoBO8Cttm8bgJFWWabbsjQ9Av9Ky+6UcvKx6ue0LLb/LEhtcyQpRyKfzeXcg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -2307,6 +2679,105 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/mongodb": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongoose": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.6.2.tgz", + "integrity": "sha512-ErbDVvuUzUfyQpXvJ6sXznmZDICD8r6wIsa0VKjJtB6/LZncqwUn5Um040G1BaNo6L3Jz+xItLSwT0wZmSmUaQ==", + "license": "MIT", + "dependencies": { + "bson": "^6.7.0", + "kareem": "2.6.3", + "mongodb": "6.8.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "license": "MIT", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2319,6 +2790,32 @@ "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", "license": "ISC" }, + "node_modules/natural": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/natural/-/natural-8.0.1.tgz", + "integrity": "sha512-VVw8O5KrfvwqAFeNZEgBbdgA+AQaBlHcXEootWU7TWDaFWFI0VLfzyKMsRjnfdS3cVCpWmI04xLJonCvEv11VQ==", + "license": "MIT", + "dependencies": { + "afinn-165": "^1.0.2", + "afinn-165-financialmarketnews": "^3.0.0", + "apparatus": "^0.0.10", + "dotenv": "^16.4.5", + "http-server": "^14.1.1", + "memjs": "^1.3.2", + "mongoose": "^8.2.0", + "pg": "^8.11.3", + "redis": "^4.6.13", + "safe-stable-stringify": "^2.2.0", + "stopwords-iso": "^1.1.0", + "sylvester": "^0.0.12", + "underscore": "^1.9.1", + "uuid": "^9.0.1", + "wordnet-db": "^3.1.11" + }, + "engines": { + "node": ">=0.4.10" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2446,6 +2943,15 @@ "node": ">=4" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -2583,6 +3089,95 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "license": "MIT" }, + "node_modules/pg": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -2665,6 +3260,29 @@ "node": ">=4" } }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -2674,6 +3292,45 @@ "node": ">= 0.4" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2798,6 +3455,23 @@ "node": ">=4" } }, + "node_modules/redis": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", + "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.6.0", + "@redis/graph": "1.1.1", + "@redis/json": "1.0.7", + "@redis/search": "1.2.0", + "@redis/time-series": "1.1.0" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -2914,6 +3588,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -3051,12 +3731,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "license": "MIT" + }, "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -3137,6 +3832,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", + "license": "MIT" + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -3161,6 +3862,15 @@ "node": ">=4" } }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -3193,6 +3903,15 @@ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "license": "CC0-1.0" }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3268,6 +3987,15 @@ "node": ">=0.10.0" } }, + "node_modules/stopwords-iso": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stopwords-iso/-/stopwords-iso-1.1.0.tgz", + "integrity": "sha512-I6GPS/E0zyieHehMRPQcqkiBMJKGgLta+1hREixhoLPqEA0AlVFiC43dl8uPpmkkeRdDMzYRWFWk5/l9x7nmNg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -3360,6 +4088,18 @@ "node": ">=0.10.0" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -3372,6 +4112,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sylvester": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/sylvester/-/sylvester-0.0.12.tgz", + "integrity": "sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw==", + "engines": { + "node": ">=0.2.6" + } + }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", @@ -3497,6 +4245,18 @@ "node": ">=0.8" } }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -3615,6 +4375,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -3630,6 +4407,25 @@ "punycode": "^2.1.0" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -3654,6 +4450,52 @@ "extsprintf": "^1.2.0" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -3710,6 +4552,15 @@ "node": ">=0.10.0" } }, + "node_modules/wordnet-db": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz", + "integrity": "sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==", + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3736,6 +4587,12 @@ "engines": { "node": ">=0.4" } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" } } } diff --git a/package.json b/package.json index feb343a..9c7bb2e 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "dotenv": "^16.4.5", "luxon": "^3.5.0", + "natural": "^8.0.1", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } diff --git a/util.js b/util.js index 9cbd364..a8ac565 100644 --- a/util.js +++ b/util.js @@ -1,6 +1,7 @@ const fs = require('fs') const path = require('path') const { DateTime } = require('luxon') +const natural = require('natural') const toPacificTimeString = (date) => date @@ -35,9 +36,13 @@ const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(', // Word count function const getWordCount = (str) => { + tokenizer = new natural.WordTokenizer() + const cleanStr = stripHTML(escapeComment(str)) //const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags - return cleanStr.trim().split(/\s+/).length + const tokens = tokenizer.tokenize(cleanStr) + const tokenCount = tokens.length + return tokenCount } // Function to calculate the topic summary From 9fef383b25922fc7b13847cedb6b3be2a1c199d2 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:14:32 -0700 Subject: [PATCH 30/54] add jest and util tests --- package-lock.json | 6549 ++++++++++++++++++++++++++++++++++----------- package.json | 1 + util.test.js | 101 + 3 files changed, 5063 insertions(+), 1588 deletions(-) create mode 100644 util.test.js diff --git a/package-lock.json b/package-lock.json index 7c18c7e..b0a6136 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,903 +10,3435 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "jest": "^29.7.0", "luxon": "^3.5.0", "natural": "^8.0.1", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", - "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "license": "MIT", "dependencies": { - "sparse-bitfield": "^3.0.3" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@redis/bloom": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", - "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@redis/client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", - "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "license": "MIT", "dependencies": { - "cluster-key-slot": "1.1.2", - "generic-pool": "3.9.0", - "yallist": "4.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@redis/graph": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", - "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@redis/json": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", - "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" + "dependencies": { + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@redis/search": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", - "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@redis/time-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", - "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@redis/client": "^1.0.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", - "license": "MIT" + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "license": "MIT", "dependencies": { - "@types/webidl-conversions": "*" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/afinn-165": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz", - "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/afinn-165-financialmarketnews": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/afinn-165-financialmarketnews/-/afinn-165-financialmarketnews-3.0.0.tgz", - "integrity": "sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==", + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { "node": ">=4" } }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/apparatus": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz", - "integrity": "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==", + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "license": "MIT", "dependencies": { - "sylvester": ">= 0.0.8" + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=0.2.6" + "node": ">=6.0.0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "license": "Apache-2.0", - "engines": { - "node": "*" + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "license": "MIT" + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "license": "BSD-3-Clause", + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "license": "MIT", "dependencies": { - "tweetnacl": "^0.14.3" + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "license": "MIT" }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "license": "MIT" + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/bson": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", - "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=16.20.1" + "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "license": "MIT", "dependencies": { - "callsites": "^0.2.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "license": "Apache-2.0" + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", - "license": "MIT" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "license": "MIT" + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "license": "ISC" - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "license": "Apache-2.0", + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/config": { - "version": "1.31.0", - "resolved": "https://registry.npmjs.org/config/-/config-1.31.0.tgz", - "integrity": "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "license": "MIT", "dependencies": { - "json5": "^1.0.1" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 4.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "license": "MIT" - }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">= 0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=4.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=0.10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "node_modules/@jest/source-map/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/deglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", - "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", - "license": "ISC", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "license": "MIT", "dependencies": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^3.0.9", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/deglob/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "license": "MIT" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">=6.0.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", + "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", + "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/afinn-165": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz", + "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/afinn-165-financialmarketnews": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/afinn-165-financialmarketnews/-/afinn-165-financialmarketnews-3.0.0.tgz", + "integrity": "sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apparatus": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz", + "integrity": "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==", + "license": "MIT", + "dependencies": { + "sylvester": ">= 0.0.8" + }, + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/bson": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "license": "MIT", + "dependencies": { + "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "license": "MIT" + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "license": "ISC" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/config": { + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/config/-/config-1.31.0.tgz", + "integrity": "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==", + "license": "MIT", + "dependencies": { + "json5": "^1.0.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "license": "ISC", + "dependencies": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + } + }, + "node_modules/deglob/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", + "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "license": "MIT", + "dependencies": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-import": ">=2.13.0", + "eslint-plugin-node": ">=7.0.0", + "eslint-plugin-promise": ">=4.0.0", + "eslint-plugin-standard": ">=4.0.0" + } + }, + "node_modules/eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-react": ">=7.11.1" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "license": "MIT", + "dependencies": { + "eslint-utils": "^1.4.2", + "regexpp": "^2.0.1" + }, + "engines": { + "node": ">=6.5.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "license": "MIT", + "dependencies": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "2.x - 5.x" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "license": "MIT", + "dependencies": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-standard": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/eslint/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "license": "MIT", + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "license": "MIT", + "dependencies": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "license": "MIT", + "dependencies": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -915,62 +3447,59 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 4" } }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -979,660 +3508,532 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8.0.0" } }, - "node_modules/eslint": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", - "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "license": "MIT", - "dependencies": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.2", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", - "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-import": ">=2.13.0", - "eslint-plugin-node": ">=7.0.0", - "eslint-plugin-promise": ">=4.0.0", - "eslint-plugin-standard": ">=4.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", - "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", - "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-react": ">=7.11.1" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "node": ">=4" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/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==", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-module-utils": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", - "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "assert-plus": "^1.0.0" } }, - "node_modules/eslint-plugin-es": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", - "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", - "license": "MIT", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { - "eslint-utils": "^1.4.2", - "regexpp": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6.5.0" + "node": "*" }, - "peerDependencies": { - "eslint": ">=4.19.1" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "license": "MIT", - "dependencies": { - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0", - "resolve": "^1.6.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "2.x - 5.x" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, - "node_modules/eslint-plugin-import/node_modules/ms": { + "node_modules/har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } }, - "node_modules/eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "license": "MIT", "dependencies": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { "node": ">=6" - }, - "peerDependencies": { - "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-promise": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", - "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", - "license": "ISC", + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.4.0" } }, - "node_modules/eslint-plugin-react": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", - "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "license": "MIT", "dependencies": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.2" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-standard": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", - "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "license": "MIT", - "engines": { - "node": ">=4" + "bin": { + "he": "bin/he" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", - "license": "BSD-2-Clause", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "http-server": "bin/http-server" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" }, "engines": { - "node": ">=0.10" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", "engines": { - "node": ">=4.0" + "node": ">=10.17.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "license": "MIT", "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, "engines": { - "node": ">=4" + "node": ">=0.8.19" } }, - "node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", - "license": "MIT", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "license": "MIT" + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "license": "MIT", "dependencies": { - "locate-path": "^2.0.0" + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "color-name": "1.1.3" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "license": "Apache-2.0", + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 0.12" + "node": ">=4" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -1641,41 +4042,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "license": "MIT" }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/generic-pool": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", - "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1684,25 +4076,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" }, @@ -1710,53 +4088,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -1765,112 +4118,147 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + } }, - "node_modules/har-schema": { + "node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "license": "ISC", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "license": "ISC" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -1878,11 +4266,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, "engines": { "node": ">= 0.4" }, @@ -1890,524 +4281,786 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "license": "BSD-3-Clause", "dependencies": { - "function-bind": "^1.1.2" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "license": "MIT", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { - "he": "bin/he" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "license": "MIT", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "license": "BSD-3-Clause", "dependencies": { - "whatwg-encoding": "^2.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "license": "MIT", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "license": "BSD-3-Clause", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "license": "MIT", "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" }, "bin": { - "http-server": "bin/http-server" + "jest": "bin/jest.js" }, "engines": { - "node": ">=12" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">= 4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } }, - "node_modules/inquirer": { + "node_modules/jest-config/node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "license": "MIT", "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/jest-config/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "license": "MIT", "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "license": "MIT", "dependencies": { - "is-typed-array": "^1.1.13" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "license": "ISC" - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "license": "MIT" - }, "node_modules/js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2433,12 +5086,30 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -2521,6 +5192,15 @@ "node": ">=6" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -2534,6 +5214,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -2580,6 +5266,21 @@ "loose-envify": "cli.js" } }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, "node_modules/luxon": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", @@ -2589,6 +5290,42 @@ "node": ">=12" } }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/memjs": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/memjs/-/memjs-1.3.2.tgz", @@ -2604,6 +5341,25 @@ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "license": "MIT" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -2853,6 +5609,18 @@ "node": ">=4.6.0" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -2865,6 +5633,36 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -3178,6 +5976,24 @@ "split2": "^4.1.0" } }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -3187,6 +6003,15 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -3251,6 +6076,88 @@ "node": ">=0.10" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", @@ -3339,6 +6246,38 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -3387,6 +6326,22 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -3575,6 +6530,15 @@ "uuid": "bin/uuid" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", @@ -3611,6 +6575,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -3620,6 +6605,15 @@ "node": ">=0.10.0" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -3850,6 +6844,15 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "license": "MIT" }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -3862,6 +6865,25 @@ "node": ">=4" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -3943,6 +6965,27 @@ "node": ">=0.10.0" } }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/standard": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", @@ -3996,6 +7039,40 @@ "node": ">=0.10.0" } }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4079,6 +7156,15 @@ "node": ">=4" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4208,6 +7294,20 @@ "node": ">=4" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4232,6 +7332,33 @@ "node": ">=0.6.0" } }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -4287,6 +7414,27 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -4381,6 +7529,12 @@ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "license": "MIT" }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, "node_modules/union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -4398,6 +7552,36 @@ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "license": "MIT" }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4426,6 +7610,20 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -4450,6 +7648,15 @@ "extsprintf": "^1.2.0" } }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -4561,6 +7768,67 @@ "node": ">=0.6.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4579,6 +7847,19 @@ "node": ">=0.10.0" } }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -4588,11 +7869,103 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 9c7bb2e..e46124f 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "jest": "^29.7.0", "luxon": "^3.5.0", "natural": "^8.0.1", "node-canvas-api": "^1.7.0", diff --git a/util.test.js b/util.test.js new file mode 100644 index 0000000..ae86e2e --- /dev/null +++ b/util.test.js @@ -0,0 +1,101 @@ +const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount } = require('./util') +const fs = require('fs') +const path = require('path') + +describe('Utils Functions', () => { + + describe('escapeComment', () => { + it('should escape quotes in comments', () => { + const input = 'This is a "comment"' + const expected = '"This is a \'comment\'"' + expect(escapeComment(input)).toEqual(expected) + }) + + it('should return empty string if input is empty', () => { + const input = '' + const expected = '' + expect(escapeComment(input)).toEqual(expected) + }) + }) + + describe('stripHTML', () => { + it('should remove HTML tags and  ', () => { + const input = '
Hello   World
' + const expected = 'Hello World' + expect(stripHTML(input)).toEqual(expected) + }) + + it('should return empty string if input is empty', () => { + const input = '' + const expected = '' + expect(stripHTML(input)).toEqual(expected) + }) + }) + + describe('writeHeader', () => { + const testFilePath = path.join(__dirname, 'test.csv') + + beforeEach(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + afterAll(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + it('should write headers to a file', () => { + const headers = ['Name', 'Age'] + writeHeader(testFilePath, headers) + const fileContent = fs.readFileSync(testFilePath, 'utf8') + expect(fileContent).toBe('Name,Age\r\n') + }) + }) + + describe('appendRow', () => { + const testFilePath = path.join(__dirname, 'test.csv') + + beforeEach(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + afterAll(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + it('should append a row to a file', () => { + const row = ['John', '30'] + appendRow(testFilePath, row) + const fileContent = fs.readFileSync(testFilePath, 'utf8') + expect(fileContent).toBe('John,30\r\n') + }) + }) + + describe('getWordCount', () => { + it('should count words correctly after stripping HTML and escaping comments', () => { + const input = '

This is a "test" string with   some HTML

' + const expected = 8 // "This is a test string with some HTML" -> 8 words + expect(getWordCount(input)).toBe(expected) + }) + + it('should return 0 for empty input', () => { + const input = '' + const expected = 0 + expect(getWordCount(input)).toBe(expected) + }) + + it('should return 2 for a dashed-string', () =>{ + const input = 'dashed-string' + const expected = 2 + expect(getWordCount(input)).toBe(expected) + }) + }) + +}) \ No newline at end of file From 750b8c658b9c323d4367111500c3a7770c7b4eeb Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:48:57 -0700 Subject: [PATCH 31/54] standardize date functionality --- util.js | 69 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/util.js b/util.js index a8ac565..4436877 100644 --- a/util.js +++ b/util.js @@ -3,6 +3,14 @@ const path = require('path') const { DateTime } = require('luxon') const natural = require('natural') +const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' + +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' + +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') + +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') + const toPacificTimeString = (date) => date ? DateTime.fromJSDate(date, { zone: 'utc' }) // Convert JS Date to Luxon DateTime in UTC @@ -29,11 +37,6 @@ const median = (arr) => { return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 } -const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' -const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') -const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') - // Word count function const getWordCount = (str) => { tokenizer = new natural.WordTokenizer() @@ -45,6 +48,28 @@ const getWordCount = (str) => { return tokenCount } +const msToHours = ms => ms / (1000 * 60 * 60) +const msToDays = ms => ms / (1000 * 60 * 60 * 24) + +// Function to calculate average time difference in a specified unit +const calculateAverageTimeDiff = (posts, referenceTimestamp, timeUnit = 'hours') => { + const getTimeDiffInMs = (timestamp, reference) => { + const diff = timestamp - reference; + return diff > 0 ? diff : null; + } + + // Convert the average time difference to the specified unit + const unitConverter = timeUnit === 'hours' ? msToHours : (timeUnit === 'days' ? msToDays : msToHours) + + return unitConverter( + average( + posts + .map(post => getTimeDiffInMs(post.postTimestamp, referenceTimestamp)) + .filter(diff => diff !== null) + ) + ) +} + // Function to calculate the topic summary const postStatistics = (posts, referenceTimestamp) => { // Number of posts @@ -61,48 +86,28 @@ const postStatistics = (posts, referenceTimestamp) => { } } - // Word counts const wordCounts = posts.map(post => getWordCount(post.postMessage)) - const medianWordCount = Math.round(median(wordCounts) * 10) / 10 - // Average time in hours from topicCreatedAt to postTimestamp - const timeDiffs = posts.map(post => { - return (post.postTimestamp - referenceTimestamp) - }) - - const averageTimeDiff = parseFloat(average(timeDiffs).toFixed(1)) / (1000 * 60 * 60) // Convert from milliseconds to hours - const postCountsByAuthor = posts.reduce((acc, post) => { acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 return acc }, {}) - // Average number of posts per postAuthorId const postCounts = Object.values(postCountsByAuthor) const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) - - const firstReplyTimestamp = new Date(Math.min(...posts.map( - post => new Date(post.postTimestamp)))) - - const timeDiffsFromFirst = posts - .map(post => { - return post.postTimestamp > firstReplyTimestamp - ? (post.postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours - : null - }) - .filter(diff => diff !== null) - - const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 - ? parseFloat(average(timeDiffsFromFirst).toFixed(1)) - : 0 + + const averageTimeDiffFromReferenceInHours = calculateAverageTimeDiff(posts, referenceTimestamp, 'hours') + const averageTimeDiffFromFirstInHours = calculateAverageTimeDiff(posts, firstReplyTimestamp, 'hours') + return { numberOfPosts, medianWordCount, - averageTimeDiff, + referenceTimestamp, firstReplyTimestamp, - averageTimeToPostFromFirst, + averageTimeDiffFromReferenceInHours, + averageTimeDiffFromFirstInHours, averagePostsPerAuthor } From 7cc11377548ccc828e8afb6ac2d5ea6a3e0a8d17 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:54:53 -0700 Subject: [PATCH 32/54] add dateDiff and tests --- util.js | 9 ++++++++- util.test.js | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/util.js b/util.js index 4436877..06fb864 100644 --- a/util.js +++ b/util.js @@ -48,6 +48,12 @@ const getWordCount = (str) => { return tokenCount } +const getDateDiff = (referenceTimestamp, relativeTimestamp) => { + const diffInDays = relativeTimestamp.diff(referenceTimestamp, 'days').days + return Math.floor(diffInDays) + +} + const msToHours = ms => ms / (1000 * 60 * 60) const msToDays = ms => ms / (1000 * 60 * 60 * 24) @@ -119,5 +125,6 @@ module.exports = { writeHeader, appendRow, postStatistics, - toPacificTimeString + toPacificTimeString, + getDateDiff } diff --git a/util.test.js b/util.test.js index ae86e2e..c42ce97 100644 --- a/util.test.js +++ b/util.test.js @@ -1,8 +1,16 @@ -const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount } = require('./util') +const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff } = require('./util') const fs = require('fs') const path = require('path') describe('Utils Functions', () => { + + describe('getDateDiff', () => { + it('should return 0 if the same date'), () => { + const referenceTimestamp = '2024-06-22T00:23:54Z' + const relativeTimestamp = '2024-06-22T15:23:54Z' + expect(getDateDiff(referenceTimestamp, relativeTimestamp).toEqual(0)) + } + }) describe('escapeComment', () => { it('should escape quotes in comments', () => { From 6383fc2b79a3e65005bbd378393ef2fb1008e770 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 17:56:53 -0700 Subject: [PATCH 33/54] update jest --- package-lock.json | 266 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 6 +- 2 files changed, 269 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0a6136..c3bf489 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,17 +10,20 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "jest": "^29.7.0", "luxon": "^3.5.0", "natural": "^8.0.1", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" + }, + "devDependencies": { + "jest": "^29.7.0" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -34,6 +37,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", @@ -47,6 +51,7 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -56,6 +61,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -86,6 +92,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -98,6 +105,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -107,6 +115,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.6", @@ -122,6 +131,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.25.2", @@ -138,6 +148,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -147,6 +158,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -160,6 +172,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.24.7", @@ -178,6 +191,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -187,6 +201,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -200,6 +215,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -209,6 +225,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -218,6 +235,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -227,6 +245,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.0", @@ -240,6 +259,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", @@ -255,6 +275,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -267,6 +288,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -281,6 +303,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -290,12 +313,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, "license": "MIT" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -305,12 +330,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -323,6 +350,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.6" @@ -338,6 +366,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -350,6 +379,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -362,6 +392,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -374,6 +405,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -389,6 +421,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" @@ -404,6 +437,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -416,6 +450,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -428,6 +463,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" @@ -443,6 +479,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -455,6 +492,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -467,6 +505,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -479,6 +518,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -491,6 +531,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -503,6 +544,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -515,6 +557,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -530,6 +573,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -545,6 +589,7 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" @@ -560,6 +605,7 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -574,6 +620,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -592,6 +639,7 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -606,12 +654,14 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -628,6 +678,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -641,6 +692,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -653,6 +705,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -668,6 +721,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -680,6 +734,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -689,6 +744,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -698,6 +754,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -707,6 +764,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -716,6 +774,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -733,6 +792,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -780,6 +840,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -795,6 +856,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -804,6 +866,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -816,6 +879,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", @@ -831,6 +895,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", "dependencies": { "expect": "^29.7.0", @@ -844,6 +909,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" @@ -856,6 +922,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -873,6 +940,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -888,6 +956,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -931,6 +1000,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -940,6 +1010,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -952,6 +1023,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -964,6 +1036,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -978,6 +1051,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -987,6 +1061,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -1002,6 +1077,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -1017,6 +1093,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -1043,6 +1120,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -1060,6 +1138,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1074,6 +1153,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1083,6 +1163,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1092,12 +1173,14 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1176,12 +1259,14 @@ "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" @@ -1191,6 +1276,7 @@ "version": "10.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -1200,6 +1286,7 @@ "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", @@ -1213,6 +1300,7 @@ "version": "7.6.8", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -1222,6 +1310,7 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -1232,6 +1321,7 @@ "version": "7.20.6", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" @@ -1241,6 +1331,7 @@ "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1250,12 +1341,14 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -1265,6 +1358,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" @@ -1274,6 +1368,7 @@ "version": "22.5.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -1283,6 +1378,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, "license": "MIT" }, "node_modules/@types/webidl-conversions": { @@ -1304,6 +1400,7 @@ "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -1313,6 +1410,7 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, "license": "MIT" }, "node_modules/acorn": { @@ -1418,6 +1516,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -1639,6 +1738,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", @@ -1660,6 +1760,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1676,6 +1777,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", @@ -1692,6 +1794,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1701,6 +1804,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -1716,6 +1820,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -1742,6 +1847,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -1807,6 +1913,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -1819,6 +1926,7 @@ "version": "4.23.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1851,6 +1959,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" @@ -1869,6 +1978,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, "license": "MIT" }, "node_modules/call-bind": { @@ -1915,6 +2025,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1924,6 +2035,7 @@ "version": "1.0.30001660", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1966,6 +2078,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1981,6 +2094,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -2003,6 +2117,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true, "license": "MIT" }, "node_modules/cli-cursor": { @@ -2027,6 +2142,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -2041,6 +2157,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2050,6 +2167,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2059,6 +2177,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -2073,6 +2192,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -2094,6 +2214,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", @@ -2104,6 +2225,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, "license": "MIT" }, "node_modules/color-convert": { @@ -2167,6 +2289,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, "license": "MIT" }, "node_modules/core-util-is": { @@ -2188,6 +2311,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -2314,6 +2438,7 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -2334,6 +2459,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -2406,6 +2532,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2415,6 +2542,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2458,12 +2586,14 @@ "version": "1.5.24", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==", + "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -2476,6 +2606,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/error-ex": { @@ -2615,6 +2746,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3096,6 +3228,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -3119,6 +3252,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -3133,6 +3267,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3142,6 +3277,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -3157,6 +3293,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3166,6 +3303,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -3178,6 +3316,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3187,6 +3326,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -3202,6 +3342,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -3210,6 +3351,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", @@ -3273,6 +3415,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" @@ -3307,6 +3450,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -3410,6 +3554,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -3475,6 +3620,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -3484,6 +3630,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -3512,6 +3659,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -3530,6 +3678,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3793,6 +3942,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, "license": "MIT" }, "node_modules/http-proxy": { @@ -3855,6 +4005,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" @@ -3885,6 +4036,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -4146,6 +4298,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4167,6 +4320,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -4228,6 +4382,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4321,6 +4476,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -4330,6 +4486,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", @@ -4346,6 +4503,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4358,6 +4516,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -4372,6 +4531,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -4386,6 +4546,7 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -4399,6 +4560,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -4425,6 +4587,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -4439,6 +4602,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -4454,6 +4618,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -4485,6 +4650,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -4500,6 +4666,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", @@ -4533,6 +4700,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -4578,6 +4746,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -4596,6 +4765,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4608,6 +4778,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -4623,6 +4794,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -4635,6 +4807,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4651,6 +4824,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -4668,6 +4842,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4677,6 +4852,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4702,6 +4878,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", @@ -4715,6 +4892,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -4730,6 +4908,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -4750,6 +4929,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4764,6 +4944,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -4781,6 +4962,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4790,6 +4972,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -4810,6 +4993,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", @@ -4823,6 +5007,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", @@ -4855,6 +5040,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -4870,6 +5056,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", @@ -4903,6 +5090,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4912,6 +5100,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -4943,6 +5132,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4955,6 +5145,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4972,6 +5163,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -4989,6 +5181,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5001,6 +5194,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", @@ -5020,6 +5214,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -5035,6 +5230,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -5050,6 +5246,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -5090,6 +5287,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -5108,6 +5306,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema": { @@ -5196,6 +5395,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5218,6 +5418,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/load-json-file": { @@ -5270,6 +5471,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -5279,6 +5481,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, "node_modules/luxon": { @@ -5294,6 +5497,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -5309,6 +5513,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5321,6 +5526,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" @@ -5345,12 +5551,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -5613,12 +5821,14 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, "license": "MIT" }, "node_modules/normalize-package-data": { @@ -5637,6 +5847,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5646,6 +5857,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -5658,6 +5870,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5980,12 +6193,14 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -6007,6 +6222,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -6080,6 +6296,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -6092,6 +6309,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -6105,6 +6323,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -6117,6 +6336,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -6132,6 +6352,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -6144,6 +6365,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6153,6 +6375,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6250,6 +6473,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", @@ -6264,6 +6488,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6276,6 +6501,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, "node_modules/progress": { @@ -6330,6 +6556,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, "funding": [ { "type": "individual", @@ -6534,6 +6761,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6579,6 +6807,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -6591,6 +6820,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6609,6 +6839,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6848,6 +7079,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6869,6 +7101,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -6878,6 +7111,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -6969,6 +7203,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -6981,6 +7216,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7043,6 +7279,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -7056,6 +7293,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7065,6 +7303,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7160,6 +7399,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7298,6 +7538,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -7336,12 +7577,14 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -7351,6 +7594,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -7418,6 +7662,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -7427,6 +7672,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -7533,6 +7779,7 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, "license": "MIT" }, "node_modules/union": { @@ -7556,6 +7803,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -7614,6 +7862,7 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -7652,6 +7901,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" @@ -7772,6 +8022,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -7789,6 +8040,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7798,6 +8050,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7807,6 +8060,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7821,6 +8075,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7851,6 +8106,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -7873,6 +8129,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -7888,6 +8145,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -7906,6 +8164,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -7915,6 +8174,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7924,6 +8184,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7933,6 +8194,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7947,6 +8209,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7959,6 +8222,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index e46124f..5719328 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,19 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "jest", "start": "node index.js" }, "author": "", "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "jest": "^29.7.0", "luxon": "^3.5.0", "natural": "^8.0.1", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" + }, + "devDependencies": { + "jest": "^29.7.0" } } From 72280fbf88c9add2c71b6c3013d7632d7ee92904 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 18:04:31 -0700 Subject: [PATCH 34/54] update dateDiff tests --- util.js | 12 ++++++++++-- util.test.js | 27 +++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/util.js b/util.js index 06fb864..b950f80 100644 --- a/util.js +++ b/util.js @@ -49,7 +49,14 @@ const getWordCount = (str) => { } const getDateDiff = (referenceTimestamp, relativeTimestamp) => { - const diffInDays = relativeTimestamp.diff(referenceTimestamp, 'days').days + + const referenceDateTime = DateTime.fromISO(referenceTimestamp) + const relativeDateTime = DateTime.fromISO(relativeTimestamp) + + // Calculate the difference in days + const diffInDays = relativeDateTime.diff(referenceDateTime, 'days').days + + // Return the floor of the difference in days return Math.floor(diffInDays) } @@ -126,5 +133,6 @@ module.exports = { appendRow, postStatistics, toPacificTimeString, - getDateDiff + getDateDiff, + getWordCount } diff --git a/util.test.js b/util.test.js index c42ce97..8b715ab 100644 --- a/util.test.js +++ b/util.test.js @@ -5,11 +5,30 @@ const path = require('path') describe('Utils Functions', () => { describe('getDateDiff', () => { - it('should return 0 if the same date'), () => { + it('should return 0 if the same date and time', () => { + const referenceTimestamp = '2024-06-22T00:23:54Z' + const relativeTimestamp = '2024-06-22T00:23:54Z' // Same date and time + + // Call the function and check the result + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(0) + }), + + it('should return 1 if the relativeDate is the next day any time', () => { const referenceTimestamp = '2024-06-22T00:23:54Z' - const relativeTimestamp = '2024-06-22T15:23:54Z' - expect(getDateDiff(referenceTimestamp, relativeTimestamp).toEqual(0)) - } + const relativeTimestamp = '2024-06-23T12:23:54Z' // Same date and time + + // Call the function and check the result + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(1) + }) + + it('should return 10 if the relativeDate is 10 days later', () => { + const referenceTimestamp = '2024-06-10T00:23:54Z' + const relativeTimestamp = '2024-06-20T12:23:54Z' // Same date and time + + // Call the function and check the result + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(10) + }) + }) describe('escapeComment', () => { From 2ec54d53aa66f4cb412b8f92fa6acb7420414fa5 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 18:05:26 -0700 Subject: [PATCH 35/54] fix second timestamp --- util.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util.test.js b/util.test.js index 8b715ab..56d3ac4 100644 --- a/util.test.js +++ b/util.test.js @@ -5,9 +5,9 @@ const path = require('path') describe('Utils Functions', () => { describe('getDateDiff', () => { - it('should return 0 if the same date and time', () => { + it('should return 0 if the same date and different times', () => { const referenceTimestamp = '2024-06-22T00:23:54Z' - const relativeTimestamp = '2024-06-22T00:23:54Z' // Same date and time + const relativeTimestamp = '2024-06-22T12:23:54Z' // Same date and time // Call the function and check the result expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(0) From 96071324295dbc573eaf8ca2698bf23acc903c87 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 20:33:59 -0700 Subject: [PATCH 36/54] add date fns and tests --- index.js | 1 + util.js | 28 +++++++++++++------ util.test.js | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 98 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index 7b53989..793977c 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const writeToCSV = require('./writeToCSV') const writeSummaryToCSV = require('./writeSummaryToCSV') const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') require('dotenv').config() +const R = require('ramda') const envVariableWarning = (msg) => { console.info(msg) diff --git a/util.js b/util.js index b950f80..740fc2b 100644 --- a/util.js +++ b/util.js @@ -11,12 +11,23 @@ const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, header const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') -const toPacificTimeString = (date) => - date - ? DateTime.fromJSDate(date, { zone: 'utc' }) // Convert JS Date to Luxon DateTime in UTC - .setZone('America/Los_Angeles') // Convert to Pacific Time - .toFormat('yyyy-MM-dd HH:mm:ss ZZZZ') // Format the DateTime object - : null +const toDateTime = (str) => { + if (!str) return null // Return null if input is null, undefined, or an empty string + + try { + const dateTime = DateTime.fromISO(str, { zone: 'utc' }) + return dateTime.isValid ? dateTime : null // Return null if the DateTime is invalid + } catch { + return null // Return null if an error occurs + } +} + +const convertToPacificTime = (dateTime) => { + if (dateTime && dateTime.isValid) { + return dateTime.setZone('America/Los_Angeles') + } + return null // Return null if the DateTime is invalid or not provided +} const flatten = arr => arr.reduce((acc, cur) => Array.isArray(cur) @@ -132,7 +143,8 @@ module.exports = { writeHeader, appendRow, postStatistics, - toPacificTimeString, + convertToPacificTime, getDateDiff, - getWordCount + getWordCount, + toDateTime } diff --git a/util.test.js b/util.test.js index 56d3ac4..3e768b0 100644 --- a/util.test.js +++ b/util.test.js @@ -1,9 +1,85 @@ -const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff } = require('./util') +const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff, toDateTime, convertToPacificTime} = require('./util') const fs = require('fs') const path = require('path') +const { DateTime } = require('luxon') describe('Utils Functions', () => { + describe.only('convertToPacificTime', () => { + + it('should convert a valid UTC DateTime object with only hours to Pacific Time', () => { + const utcDateTime = DateTime.fromISO('2024-09-16T12:00:00Z', { zone: 'utc' }) + + const pacificDateTime = convertToPacificTime(utcDateTime) + + // Assert that the conversion is correct + expect(pacificDateTime).toBeInstanceOf(DateTime) + expect(pacificDateTime.toISO()).toBe('2024-09-16T05:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) + }) + + it('should handle UTC midnight correctly', () => { + const utcDateTime = DateTime.fromISO('2024-09-16T00:00:00Z', { zone: 'utc' }) + const pacificDateTime = convertToPacificTime(utcDateTime) + // Assert that the conversion is correct + expect(pacificDateTime).toBeInstanceOf(DateTime) + expect(pacificDateTime.toISO()).toBe('2024-09-15T17:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) + }) + + it('should handle UTC time with -08:00 offset correctly', () => { + const utcDateTime = DateTime.fromISO('2024-01-16T12:00:00Z', { zone: 'utc' }) + const pacificDateTime = convertToPacificTime(utcDateTime) + + expect(pacificDateTime).toBeInstanceOf(DateTime) + // Pacific Time (PST) is UTC-8, so noon UTC should be 4 AM PST the same day + expect(pacificDateTime.toISO()).toBe('2024-01-16T04:00:00.000-08:00') + }) + + + it('should return null if the input is null', () => { + const result = convertToPacificTime(null) + expect(result).toBeNull() + }) + + it('should return null if the input is an invalid DateTime object', () => { + const invalidDateTime = DateTime.invalid('Invalid DateTime') + + const result = convertToPacificTime(invalidDateTime) + expect(result).toBeNull() + }) + }) + + describe('toDateTime', () => { + + it('should convert a valid ISO date string to a luxon DateTime object', () => { + const isoString = '2024-09-16T12:34:56.000Z' + const result = toDateTime(isoString) + expect(result.toISO()).toBe(isoString) + }) + + it('should return null if the input is null', () => { + const result = toDateTime(null) + expect(result).toBeNull() + }) + + it('should return null if the input is undefined', () => { + const result = toDateTime(undefined) + expect(result).toBeNull() + }) + + it('should handle an empty string by returning null', () => { + const emptyString = '' + const result = toDateTime(emptyString) + // The behavior with empty strings might vary, but usually DateTime.fromISO() will produce an invalid DateTime + expect(result).toBeNull() + }) + + it('should return null if the input is an invalid ISO string', () => { + const invalidIsoString = 'invalid-date' + const result = toDateTime(invalidIsoString) + expect(result).toBeNull() + }) + }) + describe('getDateDiff', () => { it('should return 0 if the same date and different times', () => { const referenceTimestamp = '2024-06-22T00:23:54Z' From 9acc5706971ce6ef3261711dab0183ed0f2f938c Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 20:44:45 -0700 Subject: [PATCH 37/54] lint fixing and pass tests --- index.js | 29 ++- util.js | 4 +- util.test.js | 387 +++++++++++++++++------------------ writeSummaryByModuleToCSV.js | 4 +- writeSummaryToCSV.js | 8 +- writeToCSV.js | 13 +- 6 files changed, 214 insertions(+), 231 deletions(-) diff --git a/index.js b/index.js index 793977c..f545007 100644 --- a/index.js +++ b/index.js @@ -4,16 +4,16 @@ const writeToCSV = require('./writeToCSV') const writeSummaryToCSV = require('./writeSummaryToCSV') const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') require('dotenv').config() -const R = require('ramda') const envVariableWarning = (msg) => { console.info(msg) } + const envVariableError = (msg) => { console.error(msg) process.exit(1) - } + const checkEnvVariable = (varName, errMsg) => { if (!process.env[varName]) { if (varName === 'INCLUDE_MODULE_SUMMARY') { @@ -56,7 +56,7 @@ const getNestedReplies = (replyObj, participants, topicId) => { const getDiscussionsAndTopics = async (courseId, topicIds) => { const fetchDetails = topicId => Promise.all([ capi.getFullDiscussion(courseId, topicId), - capi.getDiscussionTopic(courseId, topicId), + capi.getDiscussionTopic(courseId, topicId) ]) const discussionsAndTopics = await Promise.all( @@ -98,18 +98,16 @@ const processDiscussionTopic = ({ discussion, topic }) => { const getDiscussions = async courseId => { const discussionTopicIds = await getDiscussionTopicIds(courseId) const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionTopicIds) - + return discussionsAndTopics.map(processDiscussionTopic) } - const getPublishedModuleDiscussions = async courseId => { - const modules = await capi.getModules(courseId) const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { const items = await capi.getModuleItems(courseId, module.id) - const discussionItems = items.filter(item => item.type === "Discussion" && item.published) + const discussionItems = items.filter(item => item.type === 'Discussion' && item.published) const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) @@ -129,7 +127,6 @@ const getPublishedModuleDiscussions = async courseId => { })) return modulesWithDiscussionItems - } const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) @@ -137,21 +134,21 @@ const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.I Promise.all( courseIds.map(courseId => { - const basePromise = getDiscussions(courseId).then(discussions => + const basePromise = getDiscussions(courseId).then(discussions => Promise.all([ - writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV - writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV + writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV + writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV ]) ) const additionalPromise = returnSummaryByModule - ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => - writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV - ) - : Promise.resolve() // No additional operation if condition is false + ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => + writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV + ) + : Promise.resolve() // No additional operation if condition is false return Promise.all([basePromise, additionalPromise]) }) ).catch(error => { console.error('Error processing discussions and modules:', error.message || `An unexpected error occurred: ${error}`) -}) \ No newline at end of file +}) diff --git a/util.js b/util.js index 740fc2b..4990a7a 100644 --- a/util.js +++ b/util.js @@ -16,9 +16,9 @@ const toDateTime = (str) => { try { const dateTime = DateTime.fromISO(str, { zone: 'utc' }) - return dateTime.isValid ? dateTime : null // Return null if the DateTime is invalid + return dateTime.isValid ? dateTime : null } catch { - return null // Return null if an error occurs + return null } } diff --git a/util.test.js b/util.test.js index 3e768b0..971da44 100644 --- a/util.test.js +++ b/util.test.js @@ -1,204 +1,193 @@ -const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff, toDateTime, convertToPacificTime} = require('./util') +/* global describe it expect beforeEach beforeAll */ +const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff, toDateTime, convertToPacificTime } = require('./util') const fs = require('fs') const path = require('path') const { DateTime } = require('luxon') describe('Utils Functions', () => { - - describe.only('convertToPacificTime', () => { - - it('should convert a valid UTC DateTime object with only hours to Pacific Time', () => { - const utcDateTime = DateTime.fromISO('2024-09-16T12:00:00Z', { zone: 'utc' }) - - const pacificDateTime = convertToPacificTime(utcDateTime) - - // Assert that the conversion is correct - expect(pacificDateTime).toBeInstanceOf(DateTime) - expect(pacificDateTime.toISO()).toBe('2024-09-16T05:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) - }) - - it('should handle UTC midnight correctly', () => { - const utcDateTime = DateTime.fromISO('2024-09-16T00:00:00Z', { zone: 'utc' }) - const pacificDateTime = convertToPacificTime(utcDateTime) - // Assert that the conversion is correct - expect(pacificDateTime).toBeInstanceOf(DateTime) - expect(pacificDateTime.toISO()).toBe('2024-09-15T17:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) - }) - - it('should handle UTC time with -08:00 offset correctly', () => { - const utcDateTime = DateTime.fromISO('2024-01-16T12:00:00Z', { zone: 'utc' }) - const pacificDateTime = convertToPacificTime(utcDateTime) - - expect(pacificDateTime).toBeInstanceOf(DateTime) - // Pacific Time (PST) is UTC-8, so noon UTC should be 4 AM PST the same day - expect(pacificDateTime.toISO()).toBe('2024-01-16T04:00:00.000-08:00') - }) - - - it('should return null if the input is null', () => { - const result = convertToPacificTime(null) - expect(result).toBeNull() - }) - - it('should return null if the input is an invalid DateTime object', () => { - const invalidDateTime = DateTime.invalid('Invalid DateTime') - - const result = convertToPacificTime(invalidDateTime) - expect(result).toBeNull() - }) - }) - - describe('toDateTime', () => { - - it('should convert a valid ISO date string to a luxon DateTime object', () => { - const isoString = '2024-09-16T12:34:56.000Z' - const result = toDateTime(isoString) - expect(result.toISO()).toBe(isoString) - }) - - it('should return null if the input is null', () => { - const result = toDateTime(null) - expect(result).toBeNull() - }) - - it('should return null if the input is undefined', () => { - const result = toDateTime(undefined) - expect(result).toBeNull() - }) - - it('should handle an empty string by returning null', () => { - const emptyString = '' - const result = toDateTime(emptyString) - // The behavior with empty strings might vary, but usually DateTime.fromISO() will produce an invalid DateTime - expect(result).toBeNull() - }) - - it('should return null if the input is an invalid ISO string', () => { - const invalidIsoString = 'invalid-date' - const result = toDateTime(invalidIsoString) - expect(result).toBeNull() - }) - }) - - describe('getDateDiff', () => { - it('should return 0 if the same date and different times', () => { - const referenceTimestamp = '2024-06-22T00:23:54Z' - const relativeTimestamp = '2024-06-22T12:23:54Z' // Same date and time - - // Call the function and check the result - expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(0) - }), - - it('should return 1 if the relativeDate is the next day any time', () => { - const referenceTimestamp = '2024-06-22T00:23:54Z' - const relativeTimestamp = '2024-06-23T12:23:54Z' // Same date and time - - // Call the function and check the result - expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(1) - }) - - it('should return 10 if the relativeDate is 10 days later', () => { - const referenceTimestamp = '2024-06-10T00:23:54Z' - const relativeTimestamp = '2024-06-20T12:23:54Z' // Same date and time - - // Call the function and check the result - expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(10) - }) - - }) - - describe('escapeComment', () => { - it('should escape quotes in comments', () => { - const input = 'This is a "comment"' - const expected = '"This is a \'comment\'"' - expect(escapeComment(input)).toEqual(expected) - }) - - it('should return empty string if input is empty', () => { - const input = '' - const expected = '' - expect(escapeComment(input)).toEqual(expected) - }) - }) - - describe('stripHTML', () => { - it('should remove HTML tags and  ', () => { - const input = '
Hello   World
' - const expected = 'Hello World' - expect(stripHTML(input)).toEqual(expected) - }) - - it('should return empty string if input is empty', () => { - const input = '' - const expected = '' - expect(stripHTML(input)).toEqual(expected) - }) - }) - - describe('writeHeader', () => { - const testFilePath = path.join(__dirname, 'test.csv') - - beforeEach(() => { - if (fs.existsSync(testFilePath)) { - fs.unlinkSync(testFilePath) - } - }) - - afterAll(() => { - if (fs.existsSync(testFilePath)) { - fs.unlinkSync(testFilePath) - } - }) - - it('should write headers to a file', () => { - const headers = ['Name', 'Age'] - writeHeader(testFilePath, headers) - const fileContent = fs.readFileSync(testFilePath, 'utf8') - expect(fileContent).toBe('Name,Age\r\n') - }) - }) - - describe('appendRow', () => { - const testFilePath = path.join(__dirname, 'test.csv') - - beforeEach(() => { - if (fs.existsSync(testFilePath)) { - fs.unlinkSync(testFilePath) - } - }) - - afterAll(() => { - if (fs.existsSync(testFilePath)) { - fs.unlinkSync(testFilePath) - } - }) - - it('should append a row to a file', () => { - const row = ['John', '30'] - appendRow(testFilePath, row) - const fileContent = fs.readFileSync(testFilePath, 'utf8') - expect(fileContent).toBe('John,30\r\n') - }) - }) - - describe('getWordCount', () => { - it('should count words correctly after stripping HTML and escaping comments', () => { - const input = '

This is a "test" string with   some HTML

' - const expected = 8 // "This is a test string with some HTML" -> 8 words - expect(getWordCount(input)).toBe(expected) - }) - - it('should return 0 for empty input', () => { - const input = '' - const expected = 0 - expect(getWordCount(input)).toBe(expected) - }) - - it('should return 2 for a dashed-string', () =>{ - const input = 'dashed-string' - const expected = 2 - expect(getWordCount(input)).toBe(expected) - }) - }) - -}) \ No newline at end of file + describe('convertToPacificTime', () => { + it('should convert a valid UTC DateTime object with only hours to Pacific Time', () => { + const utcDateTime = DateTime.fromISO('2024-09-16T12:00:00Z', { zone: 'utc' }) + + const pacificDateTime = convertToPacificTime(utcDateTime) + + expect(pacificDateTime).toBeInstanceOf(DateTime) + expect(pacificDateTime.toISO()).toBe('2024-09-16T05:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) + }) + + it('should handle UTC midnight correctly', () => { + const utcDateTime = DateTime.fromISO('2024-09-16T00:00:00Z', { zone: 'utc' }) + const pacificDateTime = convertToPacificTime(utcDateTime) + // Assert that the conversion is correct + expect(pacificDateTime).toBeInstanceOf(DateTime) + expect(pacificDateTime.toISO()).toBe('2024-09-15T17:00:00.000-07:00') // Pacific Time offset (-07:00 for PDT) + }) + + it('should handle UTC time with -08:00 offset correctly', () => { + const utcDateTime = DateTime.fromISO('2024-01-16T12:00:00Z', { zone: 'utc' }) + const pacificDateTime = convertToPacificTime(utcDateTime) + + expect(pacificDateTime).toBeInstanceOf(DateTime) + // so noon UTC should be 4 AM PST the same day + expect(pacificDateTime.toISO()).toBe('2024-01-16T04:00:00.000-08:00') + }) + + it('should return null if the input is null', () => { + const result = convertToPacificTime(null) + expect(result).toBeNull() + }) + + it('should return null if the input is an invalid DateTime object', () => { + const invalidDateTime = DateTime.invalid('Invalid DateTime') + const result = convertToPacificTime(invalidDateTime) + expect(result).toBeNull() + }) + }) + + describe('toDateTime', () => { + it('should convert a valid ISO date string to a luxon DateTime object', () => { + const isoString = '2024-09-16T12:34:56.000Z' + const result = toDateTime(isoString) + expect(result.toISO()).toBe(isoString) + }) + + it('should return null if the input is null', () => { + const result = toDateTime(null) + expect(result).toBeNull() + }) + + it('should return null if the input is undefined', () => { + const result = toDateTime(undefined) + expect(result).toBeNull() + }) + + it('should handle an empty string by returning null', () => { + const emptyString = '' + const result = toDateTime(emptyString) + expect(result).toBeNull() + }) + + it('should return null if the input is an invalid ISO string', () => { + const invalidIsoString = 'invalid-date' + const result = toDateTime(invalidIsoString) + expect(result).toBeNull() + }) + }) + + describe('getDateDiff', () => { + it('should return 0 if the same date and different times', () => { + const referenceTimestamp = '2024-06-22T00:23:54Z' + const relativeTimestamp = '2024-06-22T12:23:54Z' // Same date and time + + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(0) + }) + + it('should return 1 if the relativeDate is the next day any time', () => { + const referenceTimestamp = '2024-06-22T00:23:54Z' + const relativeTimestamp = '2024-06-23T12:23:54Z' // Same date and time + + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(1) + }) + + it('should return 10 if the relativeDate is 10 days later', () => { + const referenceTimestamp = '2024-06-10T00:23:54Z' + const relativeTimestamp = '2024-06-20T12:23:54Z' // Same date and time + + expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(10) + }) + }) + + describe('escapeComment', () => { + it('should escape quotes in comments', () => { + const input = 'This is a "comment"' + const expected = '"This is a \'comment\'"' + expect(escapeComment(input)).toEqual(expected) + }) + + it('should return empty string if input is empty', () => { + const input = '' + const expected = '' + expect(escapeComment(input)).toEqual(expected) + }) + }) + + describe('stripHTML', () => { + it('should remove HTML tags and  ', () => { + const input = '
Hello   World
' + const expected = 'Hello World' + expect(stripHTML(input)).toEqual(expected) + }) + + it('should return empty string if input is empty', () => { + const input = '' + const expected = '' + expect(stripHTML(input)).toEqual(expected) + }) + }) + + describe('writeHeader', () => { + const testFilePath = path.join(__dirname, 'test.csv') + + beforeEach(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + afterAll(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + it('should write headers to a file', () => { + const headers = ['Name', 'Age'] + writeHeader(testFilePath, headers) + const fileContent = fs.readFileSync(testFilePath, 'utf8') + expect(fileContent).toBe('Name,Age\r\n') + }) + }) + + describe('appendRow', () => { + const testFilePath = path.join(__dirname, 'test.csv') + + beforeEach(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + afterAll(() => { + if (fs.existsSync(testFilePath)) { + fs.unlinkSync(testFilePath) + } + }) + + it('should append a row to a file', () => { + const row = ['John', '30'] + appendRow(testFilePath, row) + const fileContent = fs.readFileSync(testFilePath, 'utf8') + expect(fileContent).toBe('John,30\r\n') + }) + }) + + describe('getWordCount', () => { + it('should count words correctly after stripping HTML and escaping comments', () => { + const input = '

This is a "test" string with   some HTML

' + const expected = 8 // "This is a test string with some HTML" -> 8 words + expect(getWordCount(input)).toBe(expected) + }) + + it('should return 0 for empty input', () => { + const input = '' + const expected = 0 + expect(getWordCount(input)).toBe(expected) + }) + + it('should return 2 for a dashed-string', () => { + const input = 'dashed-string' + const expected = 2 + expect(getWordCount(input)).toBe(expected) + }) + }) +}) diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index 0c1ab18..b9bb1a0 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -1,11 +1,11 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Function to calculate the module summary const moduleSummary = (module) => { const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() - const moduleUnlockedAt = new Date(module.unlock_at) + const moduleUnlockedAt = new Date(module.unlock_at) const postSummary = postStatistics(posts, moduleUnlockedAt) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 490f2ca..4c42efb 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -8,22 +8,20 @@ const topicSummary = (topic) => { const postSummary = postStatistics(posts, topicCreatedAt) return postSummary - } // Function to write the summary to CSV const writeSummaryToCSV = (courseId, data) => { - console.log(`Writing summary of discussion data for course: ${courseId}`) const csvPath = path.join(__dirname, `output/${courseId}-discussion-summary.csv`) const headers = [ 'topic_id', 'topic_title', - //'topic_message', + // 'topic_message', 'topic_author_id', 'topic_author_name', - 'topic_created_at', + 'topic_created_at', 'topic_posted_at', 'number_of_posts', 'median_posts_word_count', @@ -42,7 +40,7 @@ const writeSummaryToCSV = (courseId, data) => { const topicDetails = { topic_id: discussion.topicId, topic_title: stripHTML(escapeComment(discussion.topicTitle)), - //topic_message: stripHTML(escapeComment(discussion.topicMessage)), + // topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), topic_created_at: toPacificTimeString(discussion.topicCreatedAt), diff --git a/writeToCSV.js b/writeToCSV.js index e5c27d9..cbed530 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,14 +1,13 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString} = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString } = require('./util') // Adjust the path as necessary const writeToCSV = (courseId, data) => { - - console.log(`Writing discussion data for course: ${courseId}`); + console.log(`Writing discussion data for course: ${courseId}`) const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) - const headers =[ + const headers = [ 'topic_id', 'topic_title', 'topic_message', @@ -37,7 +36,7 @@ const writeToCSV = (courseId, data) => { topic_author_name: escapeComment(discussion.topicAuthorName), topic_created_at: toPacificTimeString(discussion.topicCreatedAt), topic_posted_at: toPacificTimeString(discussion.topicPostedAt) - }; + } if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { discussion.replies.flat().forEach(post => { @@ -50,7 +49,7 @@ const writeToCSV = (courseId, data) => { post_message: stripHTML(escapeComment(post.postMessage)), post_likes: post.postLikes, post_timestamp: toPacificTimeString(post.postTimestamp) - }; + } appendRow(csvPath, Object.values(postDetails)) }) } else { @@ -59,4 +58,4 @@ const writeToCSV = (courseId, data) => { }) } -module.exports = writeToCSV; +module.exports = writeToCSV From d5fbb02a4cd76926f8e1e6b9a9add85094637bc6 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 20:47:43 -0700 Subject: [PATCH 38/54] use custom datetime fn when pulling data --- index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index f545007..05be58e 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ const capi = require('node-canvas-api') -const { flatten } = require('./util') +const { flatten, toDateTime } = require('./util') const writeToCSV = require('./writeToCSV') const writeSummaryToCSV = require('./writeSummaryToCSV') const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') @@ -47,7 +47,7 @@ const getNestedReplies = (replyObj, participants, topicId) => { postAuthorName: authorName, postMessage: replyObj.message, postLikes: replyObj.rating_sum || 0, - postTimestamp: new Date(replyObj.created_at), + postTimestamp: toDateTime(replyObj.created_at), postParentId: replyObj.parent_id || '', postId: replyObj.id }, ...replies] @@ -74,8 +74,8 @@ const processDiscussionTopic = ({ discussion, topic }) => { const topicTitle = topic.title const topicMessage = topic.message const author = topic.author - const topicCreatedAt = topic.created_at ? new Date(topic.created_at) : null - const topicPostedAt = topic.posted_at ? new Date(topic.posted_at) : null + const topicCreatedAt = toDateTime(topic.created_at) + const topicPostedAt = toDateTime(topic.posted_at) const participants = discussion.participants const replies = discussion.view.length > 0 ? discussion.view From 7d93632c46922dc8d20f03082097763600a4daba Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 21:38:48 -0700 Subject: [PATCH 39/54] fix functions and output --- util.js | 67 ++++++++++++++++++------------------ writeSummaryByModuleToCSV.js | 21 ++++++----- writeSummaryToCSV.js | 21 +++++------ writeToCSV.js | 8 ++--- 4 files changed, 61 insertions(+), 56 deletions(-) diff --git a/util.js b/util.js index 4990a7a..64eb038 100644 --- a/util.js +++ b/util.js @@ -12,8 +12,8 @@ const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, header const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') const toDateTime = (str) => { - if (!str) return null // Return null if input is null, undefined, or an empty string - + if (!str) + return null try { const dateTime = DateTime.fromISO(str, { zone: 'utc' }) return dateTime.isValid ? dateTime : null @@ -60,43 +60,34 @@ const getWordCount = (str) => { } const getDateDiff = (referenceTimestamp, relativeTimestamp) => { + const referenceDateTime = referenceTimestamp instanceof DateTime + ? referenceTimestamp + : toDateTime(referenceTimestamp) - const referenceDateTime = DateTime.fromISO(referenceTimestamp) - const relativeDateTime = DateTime.fromISO(relativeTimestamp) - - // Calculate the difference in days - const diffInDays = relativeDateTime.diff(referenceDateTime, 'days').days + const relativeDateTime = relativeTimestamp instanceof DateTime + ? relativeTimestamp + : toDateTime(relativeTimestamp) - // Return the floor of the difference in days - return Math.floor(diffInDays) + const diffInDays = relativeDateTime.diff(referenceDateTime, 'days').days + return Math.floor(diffInDays) } -const msToHours = ms => ms / (1000 * 60 * 60) -const msToDays = ms => ms / (1000 * 60 * 60 * 24) +const calculateAverageDiffInDays = (posts, referenceTimestamp) => { + if (referenceTimestamp === null) { + return null + } -// Function to calculate average time difference in a specified unit -const calculateAverageTimeDiff = (posts, referenceTimestamp, timeUnit = 'hours') => { - const getTimeDiffInMs = (timestamp, reference) => { - const diff = timestamp - reference; - return diff > 0 ? diff : null; - } - - // Convert the average time difference to the specified unit - const unitConverter = timeUnit === 'hours' ? msToHours : (timeUnit === 'days' ? msToDays : msToHours) - - return unitConverter( - average( - posts - .map(post => getTimeDiffInMs(post.postTimestamp, referenceTimestamp)) - .filter(diff => diff !== null) - ) - ) + const differences = posts + .map(post => getDateDiff(referenceTimestamp, post.postTimestamp)) + .filter(dayDifference => dayDifference !== null) + + // Return the average of the differences, or null if there are no valid differences + return differences.length > 0 ? average(differences) : null } // Function to calculate the topic summary const postStatistics = (posts, referenceTimestamp) => { - // Number of posts const numberOfPosts = posts.length if (numberOfPosts === 0) { @@ -105,11 +96,19 @@ const postStatistics = (posts, referenceTimestamp) => { medianWordCount: 0, averageTimeDiff: null, firstReplyTimestamp: null, - averageTimeToPostFromFirst: null, + averageTimeDiffFromReference: null, + averageTimeDiffFromFirst: null, averagePostsPerAuthor: null } } + const firstReplyMS = Math.min( + ...posts.map( + post => post.postTimestamp + )) + + const firstReplyTimestamp = DateTime.fromMillis(firstReplyMS, { zone: 'utc' }); + const wordCounts = posts.map(post => getWordCount(post.postMessage)) const medianWordCount = Math.round(median(wordCounts) * 10) / 10 @@ -121,8 +120,8 @@ const postStatistics = (posts, referenceTimestamp) => { const postCounts = Object.values(postCountsByAuthor) const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) - const averageTimeDiffFromReferenceInHours = calculateAverageTimeDiff(posts, referenceTimestamp, 'hours') - const averageTimeDiffFromFirstInHours = calculateAverageTimeDiff(posts, firstReplyTimestamp, 'hours') + const averageTimeDiffFromReference = calculateAverageDiffInDays(posts, referenceTimestamp) + const averageTimeDiffFromFirst = calculateAverageDiffInDays(posts, firstReplyTimestamp) return { @@ -130,8 +129,8 @@ const postStatistics = (posts, referenceTimestamp) => { medianWordCount, referenceTimestamp, firstReplyTimestamp, - averageTimeDiffFromReferenceInHours, - averageTimeDiffFromFirstInHours, + averageTimeDiffFromReference, + averageTimeDiffFromFirst, averagePostsPerAuthor } diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index b9bb1a0..5003190 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -1,11 +1,11 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDateTime, convertToPacificTime } = require('./util') // Function to calculate the module summary const moduleSummary = (module) => { const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() - const moduleUnlockedAt = new Date(module.unlock_at) + const moduleUnlockedAt = toDateTime(module.unlock_at) const postSummary = postStatistics(posts, moduleUnlockedAt) @@ -20,27 +20,32 @@ const writeSummaryByModuleToCSV = (courseId, modules) => { 'module_id', 'module_name', 'module_unlock_at', + 'module_created_at', 'number_of_posts', 'median_word_count', - 'average_time_to_post_hours', + 'average_time_to_post_days', 'first_reply_timestamp', - 'average_time_to_post_from_first_hours', + 'average_time_to_post_from_first_days', 'average_posts_per_author' ] writeHeader(csvPath, headers) + + modules.forEach(module => { const summary = moduleSummary(module) + const moduleDetails = { module_id: module.id, module_name: stripHTML(escapeComment(module.name)), - module_created_at: toPacificTimeString(module.unlock_at) || toPacificTimeString(module.created_at), + module_unlock_at: convertToPacificTime(toDateTime(module.unlock_at)), + module_created_at: convertToPacificTime(toDateTime(module.created_at)), number_of_posts: summary.numberOfPosts, median_word_count: summary.medianWordCount, - average_time_to_post_hours: summary.averageTimeDiff, - first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), - average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, + average_time_to_post_from_reference_days: summary.averageTimeDiffFromReference, + first_reply_timestamp: convertToPacificTime(summary.firstReplyTimestamp), + average_time_to_post_from_first_days: summary.averageTimeDiffFromFirst, average_posts_per_author: summary.averagePostsPerAuthor } appendRow(csvPath, Object.values(moduleDetails)) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 4c42efb..02cab7c 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -1,9 +1,9 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDateTime, convertToPacificTime } = require('./util') // Adjust the path as necessary const topicSummary = (topic) => { const posts = topic.replies.flat() - const topicCreatedAt = new Date(topic.topicCreatedAt) + const topicCreatedAt = toDateTime(topic.topicCreatedAt) const postSummary = postStatistics(posts, topicCreatedAt) @@ -25,9 +25,9 @@ const writeSummaryToCSV = (courseId, data) => { 'topic_posted_at', 'number_of_posts', 'median_posts_word_count', - 'average_time_to_post_hours', + 'average_time_to_post_days', 'first_reply_timestamp', - 'average_time_to_post_from_first_reply_hours', + 'average_time_to_post_from_first_days', 'average_posts_per_author' ] @@ -43,14 +43,15 @@ const writeSummaryToCSV = (courseId, data) => { // topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_created_at: toPacificTimeString(discussion.topicCreatedAt), - topic_posted_at: toPacificTimeString(discussion.topicPostedAt), + topic_created_at: convertToPacificTime(toDateTime(discussion.topicCreatedAt)), + topic_posted_at: convertToPacificTime(toDateTime(discussion.topicPostedAt)), number_of_posts: summary.numberOfPosts, - median_posts_word_count: summary.medianWordCount, - average_time_to_post_hours: summary.averageTimeDiff, - first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), - average_time_to_post_from_first_reply_hours: summary.averageTimeToPostFromFirst, + median_word_count: summary.medianWordCount, + average_time_to_post_from_reference_days: summary.averageTimeDiffFromReference, + first_reply_timestamp: convertToPacificTime(summary.firstReplyTimestamp), + average_time_to_post_from_first_days: summary.averageTimeDiffFromFirst, average_posts_per_author: summary.averagePostsPerAuthor + } appendRow(csvPath, Object.values(topicDetails)) }) diff --git a/writeToCSV.js b/writeToCSV.js index cbed530..1ea7efa 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,6 +1,6 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, convertToPacificTime, toDateTime } = require('./util') // Adjust the path as necessary const writeToCSV = (courseId, data) => { console.log(`Writing discussion data for course: ${courseId}`) @@ -34,8 +34,8 @@ const writeToCSV = (courseId, data) => { topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_created_at: toPacificTimeString(discussion.topicCreatedAt), - topic_posted_at: toPacificTimeString(discussion.topicPostedAt) + topic_created_at: convertToPacificTime(toDateTime(discussion.topicCreatedAt)), + topic_posted_at: convertToPacificTime(toDateTime(discussion.topicPostedAt)) } if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { @@ -48,7 +48,7 @@ const writeToCSV = (courseId, data) => { post_parent_id: post.postParentId, post_message: stripHTML(escapeComment(post.postMessage)), post_likes: post.postLikes, - post_timestamp: toPacificTimeString(post.postTimestamp) + post_timestamp: convertToPacificTime(toDateTime(post.postTimestamp)) } appendRow(csvPath, Object.values(postDetails)) }) From d0902dde61e41e49fa6dde9562731707e8ceb7cb Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 16 Sep 2024 21:51:32 -0700 Subject: [PATCH 40/54] update output and readme for consistency and understanding --- README.md | 15 ++++++++++----- writeSummaryByModuleToCSV.js | 6 ++---- writeSummaryToCSV.js | 11 ++++------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 40b82c4..607cd30 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,12 @@ We have calculated summary metrics for each topic. The csv with the summary info * 'topic_title', * 'topic_author_id', * 'topic_author_name', -* 'topic_created_at', * 'topic_posted_at', * 'number_of_posts': the total number of posts and replies in the topic * 'median_posts_word_count': the median word count for all posts and replies to the topic -* 'average_time_to_post_hours': the average time to post or reply from the topic created_at date +* 'average_days_to_post_from_posted_at': the average number of days to post from the topic posted_at date. A 'day' is calculated by date, not hours * 'first_reply_timestamp': the timestamp of the first post -* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) +* 'average_days_to_post_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours * 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) Where a `post` is a response to a topic, and a `reply` is a reply to the post. @@ -49,17 +48,23 @@ Where a `post` is a response to a topic, and a `reply` is a reply to the post. > `{course_id}-module-discussion-summary.csv` We have calculated summary metrics at the level of `module` where there are multiple discussion topics. This is optional (see .env creation above) The csv with the summary information includes the following columns: + * 'module_id', * 'module_name', * 'module_unlock_at': assuming the course uses an unlock_at date this will be used to calculate, * 'number_of_posts': the total number of posts and replies in the module * 'median_posts_word_count': the median word count for all posts and replies to the module topics -* 'average_time_to_post_hours': the average time to post or reply from the module_unlock_at date +* 'average_days_to_post_from_unlock_at': the average number of days to post or reply from the module's unlock_at date * 'first_reply_timestamp': the timestamp of the first post -* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) +* 'average_days_to_post_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours * 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) +### Additional Explanations +- `A 'day' is calculated by date, not hours` + +> For instance, for the topic discussion summary, if the topic was posted_at '2024-01-02 12pm' and there was 1 response at '2024-01-03 4pm', then the average_days_to_post would be 1 + ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js index 5003190..036dc30 100644 --- a/writeSummaryByModuleToCSV.js +++ b/writeSummaryByModuleToCSV.js @@ -20,12 +20,11 @@ const writeSummaryByModuleToCSV = (courseId, modules) => { 'module_id', 'module_name', 'module_unlock_at', - 'module_created_at', 'number_of_posts', 'median_word_count', - 'average_time_to_post_days', + 'average_days_to_post_from_unlock_at', 'first_reply_timestamp', - 'average_time_to_post_from_first_days', + 'average_days_to_post_from_first_response', 'average_posts_per_author' ] @@ -40,7 +39,6 @@ const writeSummaryByModuleToCSV = (courseId, modules) => { module_id: module.id, module_name: stripHTML(escapeComment(module.name)), module_unlock_at: convertToPacificTime(toDateTime(module.unlock_at)), - module_created_at: convertToPacificTime(toDateTime(module.created_at)), number_of_posts: summary.numberOfPosts, median_word_count: summary.medianWordCount, average_time_to_post_from_reference_days: summary.averageTimeDiffFromReference, diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index 02cab7c..d677c21 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -3,9 +3,9 @@ const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDate const topicSummary = (topic) => { const posts = topic.replies.flat() - const topicCreatedAt = toDateTime(topic.topicCreatedAt) + const topicPostedAt = toDateTime(topic.topic_posted_at) - const postSummary = postStatistics(posts, topicCreatedAt) + const postSummary = postStatistics(posts, topicPostedAt) return postSummary } @@ -18,16 +18,14 @@ const writeSummaryToCSV = (courseId, data) => { const headers = [ 'topic_id', 'topic_title', - // 'topic_message', 'topic_author_id', 'topic_author_name', - 'topic_created_at', 'topic_posted_at', 'number_of_posts', 'median_posts_word_count', - 'average_time_to_post_days', + 'average_days_to_post_from_posted_at', 'first_reply_timestamp', - 'average_time_to_post_from_first_days', + 'average_days_to_post_from_first_response', 'average_posts_per_author' ] @@ -43,7 +41,6 @@ const writeSummaryToCSV = (courseId, data) => { // topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), - topic_created_at: convertToPacificTime(toDateTime(discussion.topicCreatedAt)), topic_posted_at: convertToPacificTime(toDateTime(discussion.topicPostedAt)), number_of_posts: summary.numberOfPosts, median_word_count: summary.medianWordCount, From 4eac4ed984e6f791b2a23949a0178083f2764b98 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Tue, 17 Sep 2024 16:51:25 -0700 Subject: [PATCH 41/54] add extra fn --- util.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util.test.js b/util.test.js index 971da44..86bb198 100644 --- a/util.test.js +++ b/util.test.js @@ -189,5 +189,11 @@ describe('Utils Functions', () => { const expected = 2 expect(getWordCount(input)).toBe(expected) }) + + it('should count spelling mistakes', () => { + const input = 'should count speling mistakes' + const expected = 4 + expect(getWordCount(input)).toBe(expected) + }) }) }) From 82516ebe808b79e373ef773ae1a800269200d3f1 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Tue, 17 Sep 2024 17:00:07 -0700 Subject: [PATCH 42/54] removes module summary --- README.md | 22 ++------------- index.js | 40 +-------------------------- writeSummaryByModuleToCSV.js | 53 ------------------------------------ 3 files changed, 4 insertions(+), 111 deletions(-) delete mode 100644 writeSummaryByModuleToCSV.js diff --git a/README.md b/README.md index 607cd30..78eeedc 100644 --- a/README.md +++ b/README.md @@ -45,21 +45,6 @@ Where a `post` is a response to a topic, and a `reply` is a reply to the post. ![alt text](image-1.png) -> `{course_id}-module-discussion-summary.csv` - -We have calculated summary metrics at the level of `module` where there are multiple discussion topics. This is optional (see .env creation above) The csv with the summary information includes the following columns: - -* 'module_id', -* 'module_name', -* 'module_unlock_at': assuming the course uses an unlock_at date this will be used to calculate, -* 'number_of_posts': the total number of posts and replies in the module -* 'median_posts_word_count': the median word count for all posts and replies to the module topics -* 'average_days_to_post_from_unlock_at': the average number of days to post or reply from the module's unlock_at date -* 'first_reply_timestamp': the timestamp of the first post -* 'average_days_to_post_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours -* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) - - ### Additional Explanations - `A 'day' is calculated by date, not hours` @@ -84,17 +69,16 @@ These instructions will get you a copy of the project up and running on your loc 1. Create a `.env` file. 1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. > - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` > - At another institution it might be something like `https://{school}.instructure.com/api/v1` -1. Add `INCLUDE_MODULE_SUMMARY=true` (or `INCLUDE_MODULE_SUMMARY=false`) to indicate whether you would like to include a summary grouped by module. If this is not in the .env it will default to false and no module summary will be created. + Your .env file should look like ``` CANVAS_API_TOKEN=22322... CANVAS_API_DOMAIN=https://ubc.instructure.com/api/v1 COURSE_IDS=1111,1112 - INCLUDE_MODULE_SUMMARY=false ``` -1. Run the script. `npm start`. -1. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id. If you have set `INCLUDE_MODULE_SUMMARY` to `true` then you will also see a file `{course_id}-module-discussion-summary.csv`. +2. Run the script. `npm start`. +3. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id. ## Authors diff --git a/index.js b/index.js index 05be58e..cc5a13b 100644 --- a/index.js +++ b/index.js @@ -2,7 +2,6 @@ const capi = require('node-canvas-api') const { flatten, toDateTime } = require('./util') const writeToCSV = require('./writeToCSV') const writeSummaryToCSV = require('./writeSummaryToCSV') -const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') require('dotenv').config() const envVariableWarning = (msg) => { @@ -25,7 +24,6 @@ const checkEnvVariable = (varName, errMsg) => { } checkEnvVariable('COURSE_IDS', 'COURSE_IDS environment variable is not defined.') -checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. Define and set to `true` to include summary at module.') checkEnvVariable('CANVAS_API_TOKEN', 'CANVAS_API_TOKEN environment variable is not defined. You need a token to run this script.') checkEnvVariable('CANVAS_API_DOMAIN', 'CANVAS_API_DOMAIN environment variable is not defined.') @@ -102,52 +100,16 @@ const getDiscussions = async courseId => { return discussionsAndTopics.map(processDiscussionTopic) } -const getPublishedModuleDiscussions = async courseId => { - const modules = await capi.getModules(courseId) - - const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { - const items = await capi.getModuleItems(courseId, module.id) - const discussionItems = items.filter(item => item.type === 'Discussion' && item.published) - - const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) - const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) - - const discussionItemWithDiscussionData = discussionItems.map(discussionItem => { - const discussionAndReplies = processedDiscussions.find(d => d.topicId === discussionItem.content_id) - return { - ...discussionItem, - discussionAndReplies - } - }) - - return { - ...module, - discussionItems: discussionItemWithDiscussionData - } - })) - - return modulesWithDiscussionItems -} - const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) -const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false Promise.all( courseIds.map(courseId => { - const basePromise = getDiscussions(courseId).then(discussions => + getDiscussions(courseId).then(discussions => Promise.all([ writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV ]) ) - - const additionalPromise = returnSummaryByModule - ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => - writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV - ) - : Promise.resolve() // No additional operation if condition is false - - return Promise.all([basePromise, additionalPromise]) }) ).catch(error => { console.error('Error processing discussions and modules:', error.message || `An unexpected error occurred: ${error}`) diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js deleted file mode 100644 index 036dc30..0000000 --- a/writeSummaryByModuleToCSV.js +++ /dev/null @@ -1,53 +0,0 @@ - -const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDateTime, convertToPacificTime } = require('./util') - -// Function to calculate the module summary -const moduleSummary = (module) => { - const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() - const moduleUnlockedAt = toDateTime(module.unlock_at) - - const postSummary = postStatistics(posts, moduleUnlockedAt) - - return postSummary -} - -// Function to write the summary to CSV -const writeSummaryByModuleToCSV = (courseId, modules) => { - console.log(`Writing summary of module discussion data for course: ${courseId}`) - const csvPath = path.join(__dirname, `output/${courseId}-module-discussion-summary.csv`) - const headers = [ - 'module_id', - 'module_name', - 'module_unlock_at', - 'number_of_posts', - 'median_word_count', - 'average_days_to_post_from_unlock_at', - 'first_reply_timestamp', - 'average_days_to_post_from_first_response', - 'average_posts_per_author' - ] - - writeHeader(csvPath, headers) - - - - modules.forEach(module => { - const summary = moduleSummary(module) - - const moduleDetails = { - module_id: module.id, - module_name: stripHTML(escapeComment(module.name)), - module_unlock_at: convertToPacificTime(toDateTime(module.unlock_at)), - number_of_posts: summary.numberOfPosts, - median_word_count: summary.medianWordCount, - average_time_to_post_from_reference_days: summary.averageTimeDiffFromReference, - first_reply_timestamp: convertToPacificTime(summary.firstReplyTimestamp), - average_time_to_post_from_first_days: summary.averageTimeDiffFromFirst, - average_posts_per_author: summary.averagePostsPerAuthor - } - appendRow(csvPath, Object.values(moduleDetails)) - }) -} - -module.exports = writeSummaryByModuleToCSV From 2557ca3ff810a72911c1cb2a50532c1f85d34e24 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Tue, 17 Sep 2024 17:10:13 -0700 Subject: [PATCH 43/54] rm reference to module flag --- index.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/index.js b/index.js index cc5a13b..a4ace5f 100644 --- a/index.js +++ b/index.js @@ -15,11 +15,7 @@ const envVariableError = (msg) => { const checkEnvVariable = (varName, errMsg) => { if (!process.env[varName]) { - if (varName === 'INCLUDE_MODULE_SUMMARY') { - envVariableWarning(errMsg) - } else { - envVariableError(`Error: ${errMsg}. See README for an example.env`) - } + envVariableError(`Error: ${errMsg}. See README for an example.env`) } } From e70216d38a65dbc19b446ae5477560de8a2f2abf Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Tue, 17 Sep 2024 17:42:02 -0700 Subject: [PATCH 44/54] round output and fix csv error --- util.js | 26 +++++++++-- util.test.js | 118 +++++++++++++++++++++++++++++++++++++++++++++++++- writeToCSV.js | 5 --- 3 files changed, 139 insertions(+), 10 deletions(-) diff --git a/util.js b/util.js index 64eb038..c0e5b22 100644 --- a/util.js +++ b/util.js @@ -41,6 +41,12 @@ const average = (arr) => { return sum / arr.length } +const roundedAverage = (arr, decimalPlaces) => { + const avg = average(arr) + const roundedAverage = round(avg, decimalPlaces) + return roundedAverage +} + // median from array const median = (arr) => { const sorted = arr.slice().sort() @@ -48,6 +54,15 @@ const median = (arr) => { return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 } +const round = (num, decimalPlaces) => { + if (typeof num !== 'number' || typeof decimalPlaces !== 'number') { + throw new TypeError('Both arguments must be numbers') + } + + const factor = 10 ** decimalPlaces + return Math.round(num * factor) / factor +} + // Word count function const getWordCount = (str) => { tokenizer = new natural.WordTokenizer() @@ -83,7 +98,7 @@ const calculateAverageDiffInDays = (posts, referenceTimestamp) => { .filter(dayDifference => dayDifference !== null) // Return the average of the differences, or null if there are no valid differences - return differences.length > 0 ? average(differences) : null + return differences.length > 0 ? roundedAverage(differences, 2) : null } // Function to calculate the topic summary @@ -110,7 +125,7 @@ const postStatistics = (posts, referenceTimestamp) => { const firstReplyTimestamp = DateTime.fromMillis(firstReplyMS, { zone: 'utc' }); const wordCounts = posts.map(post => getWordCount(post.postMessage)) - const medianWordCount = Math.round(median(wordCounts) * 10) / 10 + const medianWordCount = round(median(wordCounts), 2) const postCountsByAuthor = posts.reduce((acc, post) => { acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 @@ -118,7 +133,7 @@ const postStatistics = (posts, referenceTimestamp) => { }, {}) const postCounts = Object.values(postCountsByAuthor) - const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) + const averagePostsPerAuthor = roundedAverage(postCounts, 2) const averageTimeDiffFromReference = calculateAverageDiffInDays(posts, referenceTimestamp) const averageTimeDiffFromFirst = calculateAverageDiffInDays(posts, firstReplyTimestamp) @@ -145,5 +160,8 @@ module.exports = { convertToPacificTime, getDateDiff, getWordCount, - toDateTime + toDateTime, + average, + round, + roundedAverage } diff --git a/util.test.js b/util.test.js index 86bb198..eca84dc 100644 --- a/util.test.js +++ b/util.test.js @@ -1,5 +1,6 @@ /* global describe it expect beforeEach beforeAll */ -const { escapeComment, stripHTML, writeHeader, appendRow, getWordCount, getDateDiff, toDateTime, convertToPacificTime } = require('./util') +const { average, round, roundedAverage, escapeComment, stripHTML, writeHeader, appendRow, + getWordCount, getDateDiff, toDateTime, convertToPacificTime } = require('./util') const fs = require('fs') const path = require('path') const { DateTime } = require('luxon') @@ -196,4 +197,119 @@ describe('Utils Functions', () => { expect(getWordCount(input)).toBe(expected) }) }) + + describe('average', () => { + test('should return 0 for an empty array', () => { + expect(average([])).toBe(0) + }) + + test('should return the correct average for a non-empty array', () => { + expect(average([1, 2, 3, 4, 5])).toBe(3) + expect(average([10, 20, 30, 40, 50])).toBe(30) + }) + + test('should handle arrays with negative numbers', () => { + expect(average([-1, -2, -3, -4, -5])).toBe(-3) + }) + + test('should handle arrays with mixed positive and negative numbers', () => { + expect(average([-1, 0, 1])).toBe(0) + expect(average([-1, -2, 3, 4])).toBe(1) + }) + + test('should handle arrays with floating-point numbers', () => { + expect(average([1.5, 2.5, 3.5])).toBe(2.5) + }) + + test('should return NaN when array contains non-numeric values', () => { + expect(average([1, 'a', 3])).toBeNaN() + }) + + test('should handle an array with a single value correctly', () => { + expect(average([7])).toBe(7) + }) + }) + + describe('round', () => { + test('should round to the nearest integer', () => { + expect(round(1.234, 0)).toBe(1) + expect(round(1.5, 0)).toBe(2) + expect(round(-1.5, 0)).toBe(-1) //Math expected behaviour + }) + + test('should round integers or add decimal', () => { + expect(round(1, 0)).toBe(1) + expect(round(1, 1)).toBe(1.0) + }) + + test('should round to one decimal place', () => { + expect(round(1.234, 1)).toBe(1.2) + expect(round(1.25, 1)).toBe(1.3) + expect(round(-1.25, 1)).toBe(-1.2) + }) + + test('should round to two decimal places', () => { + expect(round(1.234, 2)).toBe(1.23) + expect(round(1.235, 2)).toBe(1.24) + expect(round(-1.235, 2)).toBe(-1.24) + }) + + test('should handle large numbers', () => { + expect(round(123456.789, 2)).toBe(123456.79) + expect(round(-123456.789, 2)).toBe(-123456.79) + }) + + test('should handle zero decimal places', () => { + expect(round(1.234, 0)).toBe(1) + expect(round(-1.234, 0)).toBe(-1) + }) + + test('should handle cases where the number is already rounded', () => { + expect(round(1.0, 2)).toBe(1.00) + expect(round(1.23, 2)).toBe(1.23) + expect(round(-1.23, 2)).toBe(-1.23) + }) + + test('should return TypeError for invalid input', () => { + expect(() => round('string', 2)).toThrow(TypeError) + expect(() => round(null, 2)).toThrow(TypeError) + expect(() => round(undefined, 2)).toThrow(TypeError) + expect(() => round(1.23, 'two')).toThrow(TypeError) + }) + }) + + describe('roundedAverage', () => { + test('should calculate and round the average of positive numbers', () => { + expect(roundedAverage([1, 2, 3, 4, 5], 0)).toBe(3) // Average is 3 + expect(roundedAverage([1, 2, 3, 4, 5], 1)).toBe(3.0) // Average is 3.0 + expect(roundedAverage([1, 2, 3, 4, 5], 2)).toBe(3.00) // Average is 3.00 + }) + + test('should calculate and round the average of negative numbers', () => { + expect(roundedAverage([-1, -2, -3, -4, -5], 0)).toBe(-3) // Average is -3 + expect(roundedAverage([-1, -2, -3, -4, -5], 1)).toBe(-3.0) // Average is -3.0 + expect(roundedAverage([-1, -2, -3, -4, -5], 2)).toBe(-3.00) // Average is -3.00 + }) + + test('should calculate and round the average of mixed numbers', () => { + expect(roundedAverage([1, -1, 2, -2], 0)).toBe(0) // Average is 0 + expect(roundedAverage([1, -1, 2, -2], 1)).toBe(0.0) // Average is 0.0 + expect(roundedAverage([1, -1, 2, -2], 2)).toBe(0.00) // Average is 0.00 + }) + + test('should handle empty array', () => { + expect(roundedAverage([], 2)).toBe(0) // Average of an empty array is 0 + }) + + test('should handle single-element array', () => { + expect(roundedAverage([5], 0)).toBe(5) // Average is 5 + expect(roundedAverage([5], 2)).toBe(5.00) // Average is 5.00 + }) + + test('should handle arrays with decimal numbers', () => { + expect(roundedAverage([1.1, 2.2, 3.3], 0)).toBe(2) // Average is 2.2, rounded to 2 + expect(roundedAverage([1.1, 2.2, 3.3], 1)).toBe(2.2) // Average is 2.2, rounded to 2.2 + expect(roundedAverage([1.1, 2.2, 3.3], 2)).toBe(2.20) // Average is 2.2, rounded to 2.20 + }) + }) }) diff --git a/writeToCSV.js b/writeToCSV.js index 890f895..7ff60e7 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -25,10 +25,7 @@ const writeToCSV = (courseId, data) => { 'post_likes', 'post_timestamp' ] - ] - // Write the headers to the CSV file - writeHeader(csvPath, headers) // Write the headers to the CSV file writeHeader(csvPath, headers) @@ -63,7 +60,5 @@ const writeToCSV = (courseId, data) => { } }) } - }) -} module.exports = writeToCSV From 4f9afafb11760d4a5f94fa5e8c5e744106aae4a2 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Tue, 17 Sep 2024 17:47:09 -0700 Subject: [PATCH 45/54] round summaries to 2 decimals --- util.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/util.js b/util.js index c0e5b22..3855861 100644 --- a/util.js +++ b/util.js @@ -60,7 +60,8 @@ const round = (num, decimalPlaces) => { } const factor = 10 ** decimalPlaces - return Math.round(num * factor) / factor + roundedNum = Math.round(num * factor) / factor + return roundedNum.toFixed(decimalPlaces) } // Word count function @@ -107,8 +108,8 @@ const postStatistics = (posts, referenceTimestamp) => { if (numberOfPosts === 0) { return { - numberOfPosts: 0, - medianWordCount: 0, + numberOfPosts: (0).toFixed(2), + medianWordCount: (0).toFixed(2), averageTimeDiff: null, firstReplyTimestamp: null, averageTimeDiffFromReference: null, From c49f1965ee4f65e7d52ea5616abd4f5d8b2032a5 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 11:18:59 -0700 Subject: [PATCH 46/54] fix duplicate output --- writeToCSV.js | 1 - 1 file changed, 1 deletion(-) diff --git a/writeToCSV.js b/writeToCSV.js index 7ff60e7..4401052 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -56,7 +56,6 @@ const writeToCSV = (courseId, data) => { }) } else { appendRow(csvPath, Object.values(topicDetails)) - appendRow(csvPath, Object.values(topicDetails)) } }) } From 2c596ed72285f7c3e74c5fb7ac5a9cbf10680067 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 11:22:52 -0700 Subject: [PATCH 47/54] fix tests and remove unused file --- util.test.js | 66 ++++++++++++++++++------------------ writeSummaryByModuleToCSV.js | 50 --------------------------- 2 files changed, 33 insertions(+), 83 deletions(-) delete mode 100644 writeSummaryByModuleToCSV.js diff --git a/util.test.js b/util.test.js index eca84dc..415cc90 100644 --- a/util.test.js +++ b/util.test.js @@ -232,42 +232,42 @@ describe('Utils Functions', () => { describe('round', () => { test('should round to the nearest integer', () => { - expect(round(1.234, 0)).toBe(1) - expect(round(1.5, 0)).toBe(2) - expect(round(-1.5, 0)).toBe(-1) //Math expected behaviour + expect(round(1.234, 0)).toBe('1') + expect(round(1.5, 0)).toBe('2') + expect(round(-1.5, 0)).toBe('-1') //Math expected behaviour }) test('should round integers or add decimal', () => { - expect(round(1, 0)).toBe(1) - expect(round(1, 1)).toBe(1.0) + expect(round(1, 0)).toBe('1') + expect(round(1, 1)).toBe('1.0') }) test('should round to one decimal place', () => { - expect(round(1.234, 1)).toBe(1.2) - expect(round(1.25, 1)).toBe(1.3) - expect(round(-1.25, 1)).toBe(-1.2) + expect(round(1.234, 1)).toBe('1.2') + expect(round(1.25, 1)).toBe('1.3') + expect(round(-1.25, 1)).toBe('-1.2') }) test('should round to two decimal places', () => { - expect(round(1.234, 2)).toBe(1.23) - expect(round(1.235, 2)).toBe(1.24) - expect(round(-1.235, 2)).toBe(-1.24) + expect(round(1.234, 2)).toBe('1.23') + expect(round(1.235, 2)).toBe('1.24') + expect(round(-1.235, 2)).toBe('-1.24') }) test('should handle large numbers', () => { - expect(round(123456.789, 2)).toBe(123456.79) - expect(round(-123456.789, 2)).toBe(-123456.79) + expect(round(123456.789, 2)).toBe('123456.79') + expect(round(-123456.789, 2)).toBe('-123456.79') }) test('should handle zero decimal places', () => { - expect(round(1.234, 0)).toBe(1) - expect(round(-1.234, 0)).toBe(-1) + expect(round(1.234, 0)).toBe('1') + expect(round(-1.234, 0)).toBe('-1') }) test('should handle cases where the number is already rounded', () => { - expect(round(1.0, 2)).toBe(1.00) - expect(round(1.23, 2)).toBe(1.23) - expect(round(-1.23, 2)).toBe(-1.23) + expect(round(1.0, 2)).toBe('1.00') + expect(round(1.23, 2)).toBe('1.23') + expect(round(-1.23, 2)).toBe('-1.23') }) test('should return TypeError for invalid input', () => { @@ -280,36 +280,36 @@ describe('Utils Functions', () => { describe('roundedAverage', () => { test('should calculate and round the average of positive numbers', () => { - expect(roundedAverage([1, 2, 3, 4, 5], 0)).toBe(3) // Average is 3 - expect(roundedAverage([1, 2, 3, 4, 5], 1)).toBe(3.0) // Average is 3.0 - expect(roundedAverage([1, 2, 3, 4, 5], 2)).toBe(3.00) // Average is 3.00 + expect(roundedAverage([1, 2, 3, 4, 5], 0)).toBe('3') // Average is 3 + expect(roundedAverage([1, 2, 3, 4, 5], 1)).toBe('3.0') // Average is 3.0 + expect(roundedAverage([1, 2, 3, 4, 5], 2)).toBe('3.00') // Average is 3.00 }) test('should calculate and round the average of negative numbers', () => { - expect(roundedAverage([-1, -2, -3, -4, -5], 0)).toBe(-3) // Average is -3 - expect(roundedAverage([-1, -2, -3, -4, -5], 1)).toBe(-3.0) // Average is -3.0 - expect(roundedAverage([-1, -2, -3, -4, -5], 2)).toBe(-3.00) // Average is -3.00 + expect(roundedAverage([-1, -2, -3, -4, -5], 0)).toBe('-3') // Average is -3 + expect(roundedAverage([-1, -2, -3, -4, -5], 1)).toBe('-3.0') // Average is -3.0 + expect(roundedAverage([-1, -2, -3, -4, -5], 2)).toBe('-3.00') // Average is -3.00 }) test('should calculate and round the average of mixed numbers', () => { - expect(roundedAverage([1, -1, 2, -2], 0)).toBe(0) // Average is 0 - expect(roundedAverage([1, -1, 2, -2], 1)).toBe(0.0) // Average is 0.0 - expect(roundedAverage([1, -1, 2, -2], 2)).toBe(0.00) // Average is 0.00 + expect(roundedAverage([1, -1, 2, -2], 0)).toBe('0') // Average is 0 + expect(roundedAverage([1, -1, 2, -2], 1)).toBe('0.0') // Average is 0.0 + expect(roundedAverage([1, -1, 2, -2], 2)).toBe('0.00') // Average is 0.00 }) test('should handle empty array', () => { - expect(roundedAverage([], 2)).toBe(0) // Average of an empty array is 0 + expect(roundedAverage([], 2)).toBe('0.00') // Average of an empty array is 0 rounded to 2 }) test('should handle single-element array', () => { - expect(roundedAverage([5], 0)).toBe(5) // Average is 5 - expect(roundedAverage([5], 2)).toBe(5.00) // Average is 5.00 + expect(roundedAverage([5], 0)).toBe('5') // Average is 5 + expect(roundedAverage([5], 2)).toBe('5.00') // Average is 5.00 }) test('should handle arrays with decimal numbers', () => { - expect(roundedAverage([1.1, 2.2, 3.3], 0)).toBe(2) // Average is 2.2, rounded to 2 - expect(roundedAverage([1.1, 2.2, 3.3], 1)).toBe(2.2) // Average is 2.2, rounded to 2.2 - expect(roundedAverage([1.1, 2.2, 3.3], 2)).toBe(2.20) // Average is 2.2, rounded to 2.20 + expect(roundedAverage([1.1, 2.2, 3.3], 0)).toBe('2') // Average is 2.2, rounded to 2 + expect(roundedAverage([1.1, 2.2, 3.3], 1)).toBe('2.2') // Average is 2.2, rounded to 2.2 + expect(roundedAverage([1.1, 2.2, 3.3], 2)).toBe('2.20') // Average is 2.2, rounded to 2.20 }) }) }) diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js deleted file mode 100644 index 0c1ab18..0000000 --- a/writeSummaryByModuleToCSV.js +++ /dev/null @@ -1,50 +0,0 @@ - -const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') - -// Function to calculate the module summary -const moduleSummary = (module) => { - const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() - const moduleUnlockedAt = new Date(module.unlock_at) - - const postSummary = postStatistics(posts, moduleUnlockedAt) - - return postSummary -} - -// Function to write the summary to CSV -const writeSummaryByModuleToCSV = (courseId, modules) => { - console.log(`Writing summary of module discussion data for course: ${courseId}`) - const csvPath = path.join(__dirname, `output/${courseId}-module-discussion-summary.csv`) - const headers = [ - 'module_id', - 'module_name', - 'module_unlock_at', - 'number_of_posts', - 'median_word_count', - 'average_time_to_post_hours', - 'first_reply_timestamp', - 'average_time_to_post_from_first_hours', - 'average_posts_per_author' - ] - - writeHeader(csvPath, headers) - - modules.forEach(module => { - const summary = moduleSummary(module) - const moduleDetails = { - module_id: module.id, - module_name: stripHTML(escapeComment(module.name)), - module_created_at: toPacificTimeString(module.unlock_at) || toPacificTimeString(module.created_at), - number_of_posts: summary.numberOfPosts, - median_word_count: summary.medianWordCount, - average_time_to_post_hours: summary.averageTimeDiff, - first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), - average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, - average_posts_per_author: summary.averagePostsPerAuthor - } - appendRow(csvPath, Object.values(moduleDetails)) - }) -} - -module.exports = writeSummaryByModuleToCSV From 613409df3220a3d10d4de34b7e072c8c5f3d965c Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 12:12:54 -0700 Subject: [PATCH 48/54] fix output for csv --- util.js | 15 +++++++--- util.test.js | 68 ++++++++++++++++++++++---------------------- writeSummaryToCSV.js | 19 ++++++------- 3 files changed, 54 insertions(+), 48 deletions(-) diff --git a/util.js b/util.js index 3855861..f4a1922 100644 --- a/util.js +++ b/util.js @@ -22,6 +22,12 @@ const toDateTime = (str) => { } } +function formatNumberOutput(value, decimalPlaces = 2, defaultValue = '') { + return value != null && !isNaN(value) + ? Number(value).toFixed(decimalPlaces) + : defaultValue +} + const convertToPacificTime = (dateTime) => { if (dateTime && dateTime.isValid) { return dateTime.setZone('America/Los_Angeles') @@ -61,7 +67,7 @@ const round = (num, decimalPlaces) => { const factor = 10 ** decimalPlaces roundedNum = Math.round(num * factor) / factor - return roundedNum.toFixed(decimalPlaces) + return roundedNum } // Word count function @@ -108,8 +114,8 @@ const postStatistics = (posts, referenceTimestamp) => { if (numberOfPosts === 0) { return { - numberOfPosts: (0).toFixed(2), - medianWordCount: (0).toFixed(2), + numberOfPosts: 0, + medianWordCount: null, averageTimeDiff: null, firstReplyTimestamp: null, averageTimeDiffFromReference: null, @@ -164,5 +170,6 @@ module.exports = { toDateTime, average, round, - roundedAverage + roundedAverage, + formatNumberOutput } diff --git a/util.test.js b/util.test.js index 415cc90..a9b07b9 100644 --- a/util.test.js +++ b/util.test.js @@ -232,42 +232,42 @@ describe('Utils Functions', () => { describe('round', () => { test('should round to the nearest integer', () => { - expect(round(1.234, 0)).toBe('1') - expect(round(1.5, 0)).toBe('2') - expect(round(-1.5, 0)).toBe('-1') //Math expected behaviour + expect(round(1.234, 0)).toBe(1) + expect(round(1.5, 0)).toBe(2) + expect(round(-1.5, 0)).toBe(-1) // Math expected behaviour }) - + test('should round integers or add decimal', () => { - expect(round(1, 0)).toBe('1') - expect(round(1, 1)).toBe('1.0') + expect(round(1, 0)).toBe(1) + expect(round(1, 1)).toBe(1.0) }) test('should round to one decimal place', () => { - expect(round(1.234, 1)).toBe('1.2') - expect(round(1.25, 1)).toBe('1.3') - expect(round(-1.25, 1)).toBe('-1.2') + expect(round(1.234, 1)).toBe(1.2) + expect(round(1.25, 1)).toBe(1.3) + expect(round(-1.25, 1)).toBe(-1.2) }) test('should round to two decimal places', () => { - expect(round(1.234, 2)).toBe('1.23') - expect(round(1.235, 2)).toBe('1.24') - expect(round(-1.235, 2)).toBe('-1.24') + expect(round(1.234, 2)).toBe(1.23) + expect(round(1.235, 2)).toBe(1.24) + expect(round(-1.235, 2)).toBe(-1.24) }) test('should handle large numbers', () => { - expect(round(123456.789, 2)).toBe('123456.79') - expect(round(-123456.789, 2)).toBe('-123456.79') + expect(round(123456.789, 2)).toBe(123456.79) + expect(round(-123456.789, 2)).toBe(-123456.79) }) test('should handle zero decimal places', () => { - expect(round(1.234, 0)).toBe('1') - expect(round(-1.234, 0)).toBe('-1') + expect(round(1.234, 0)).toBe(1) + expect(round(-1.234, 0)).toBe(-1) }) test('should handle cases where the number is already rounded', () => { - expect(round(1.0, 2)).toBe('1.00') - expect(round(1.23, 2)).toBe('1.23') - expect(round(-1.23, 2)).toBe('-1.23') + expect(round(1.0, 2)).toBe(1.00) + expect(round(1.23, 2)).toBe(1.23) + expect(round(-1.23, 2)).toBe(-1.23) }) test('should return TypeError for invalid input', () => { @@ -280,36 +280,36 @@ describe('Utils Functions', () => { describe('roundedAverage', () => { test('should calculate and round the average of positive numbers', () => { - expect(roundedAverage([1, 2, 3, 4, 5], 0)).toBe('3') // Average is 3 - expect(roundedAverage([1, 2, 3, 4, 5], 1)).toBe('3.0') // Average is 3.0 - expect(roundedAverage([1, 2, 3, 4, 5], 2)).toBe('3.00') // Average is 3.00 + expect(roundedAverage([1, 2, 3, 4, 5], 0)).toBe(3) // Average is 3 + expect(roundedAverage([1, 2, 3, 4, 5], 1)).toBe(3.0) // Average is 3.0 + expect(roundedAverage([1, 2, 3, 4, 5], 2)).toBe(3.00) // Average is 3.00 }) test('should calculate and round the average of negative numbers', () => { - expect(roundedAverage([-1, -2, -3, -4, -5], 0)).toBe('-3') // Average is -3 - expect(roundedAverage([-1, -2, -3, -4, -5], 1)).toBe('-3.0') // Average is -3.0 - expect(roundedAverage([-1, -2, -3, -4, -5], 2)).toBe('-3.00') // Average is -3.00 + expect(roundedAverage([-1, -2, -3, -4, -5], 0)).toBe(-3) // Average is -3 + expect(roundedAverage([-1, -2, -3, -4, -5], 1)).toBe(-3.0) // Average is -3.0 + expect(roundedAverage([-1, -2, -3, -4, -5], 2)).toBe(-3.00) // Average is -3.00 }) test('should calculate and round the average of mixed numbers', () => { - expect(roundedAverage([1, -1, 2, -2], 0)).toBe('0') // Average is 0 - expect(roundedAverage([1, -1, 2, -2], 1)).toBe('0.0') // Average is 0.0 - expect(roundedAverage([1, -1, 2, -2], 2)).toBe('0.00') // Average is 0.00 + expect(roundedAverage([1, -1, 2, -2], 0)).toBe(0) // Average is 0 + expect(roundedAverage([1, -1, 2, -2], 1)).toBe(0) // Average is 0.0 + expect(roundedAverage([1, -1, 2, -2], 2)).toBe(0) // Average is 0.00 }) test('should handle empty array', () => { - expect(roundedAverage([], 2)).toBe('0.00') // Average of an empty array is 0 rounded to 2 + expect(roundedAverage([], 2)).toBe(0) // Average of an empty array is 0 rounded to 2 }) test('should handle single-element array', () => { - expect(roundedAverage([5], 0)).toBe('5') // Average is 5 - expect(roundedAverage([5], 2)).toBe('5.00') // Average is 5.00 + expect(roundedAverage([5], 0)).toBe(5) // Average is 5 + expect(roundedAverage([5], 2)).toBe(5.00) // Average is 5.00 }) test('should handle arrays with decimal numbers', () => { - expect(roundedAverage([1.1, 2.2, 3.3], 0)).toBe('2') // Average is 2.2, rounded to 2 - expect(roundedAverage([1.1, 2.2, 3.3], 1)).toBe('2.2') // Average is 2.2, rounded to 2.2 - expect(roundedAverage([1.1, 2.2, 3.3], 2)).toBe('2.20') // Average is 2.2, rounded to 2.20 + expect(roundedAverage([1.1, 2.2, 3.3], 0)).toBe(2) // Average is 2.2, rounded to 2 + expect(roundedAverage([1.1, 2.2, 3.3], 1)).toBe(2.2) // Average is 2.2, rounded to 2.2 + expect(roundedAverage([1.1, 2.2, 3.3], 2)).toBe(2.20) // Average is 2.2, rounded to 2.20 }) }) }) diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index d677c21..f56fdf6 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -1,5 +1,5 @@ const path = require('path') -const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDateTime, convertToPacificTime } = require('./util') // Adjust the path as necessary +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toDateTime, convertToPacificTime, formatNumberOutput } = require('./util') // Adjust the path as necessary const topicSummary = (topic) => { const posts = topic.replies.flat() @@ -22,11 +22,11 @@ const writeSummaryToCSV = (courseId, data) => { 'topic_author_name', 'topic_posted_at', 'number_of_posts', + 'average_posts_per_author', 'median_posts_word_count', 'average_days_to_post_from_posted_at', 'first_reply_timestamp', - 'average_days_to_post_from_first_response', - 'average_posts_per_author' + 'average_days_to_post_from_first_response' ] // Write the headers to the CSV file @@ -38,17 +38,16 @@ const writeSummaryToCSV = (courseId, data) => { const topicDetails = { topic_id: discussion.topicId, topic_title: stripHTML(escapeComment(discussion.topicTitle)), - // topic_message: stripHTML(escapeComment(discussion.topicMessage)), topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), topic_posted_at: convertToPacificTime(toDateTime(discussion.topicPostedAt)), - number_of_posts: summary.numberOfPosts, - median_word_count: summary.medianWordCount, - average_time_to_post_from_reference_days: summary.averageTimeDiffFromReference, + number_of_posts: formatNumberOutput(summary.numberOfPosts), + average_posts_per_author: formatNumberOutput(summary.averagePostsPerAuthor), + median_word_count: formatNumberOutput(summary.medianWordCount), + average_time_to_post_from_reference_days: formatNumberOutput(summary.averageTimeDiffFromReference), first_reply_timestamp: convertToPacificTime(summary.firstReplyTimestamp), - average_time_to_post_from_first_days: summary.averageTimeDiffFromFirst, - average_posts_per_author: summary.averagePostsPerAuthor - + average_time_to_post_from_first_days: formatNumberOutput(summary.averageTimeDiffFromFirst) + } appendRow(csvPath, Object.values(topicDetails)) }) From 36a192f366e255223cb52f9d3bffd09e449e118d Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 12:14:13 -0700 Subject: [PATCH 49/54] fix comments --- util.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util.test.js b/util.test.js index a9b07b9..88fa266 100644 --- a/util.test.js +++ b/util.test.js @@ -85,14 +85,14 @@ describe('Utils Functions', () => { it('should return 1 if the relativeDate is the next day any time', () => { const referenceTimestamp = '2024-06-22T00:23:54Z' - const relativeTimestamp = '2024-06-23T12:23:54Z' // Same date and time + const relativeTimestamp = '2024-06-23T12:23:54Z' // one day expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(1) }) it('should return 10 if the relativeDate is 10 days later', () => { const referenceTimestamp = '2024-06-10T00:23:54Z' - const relativeTimestamp = '2024-06-20T12:23:54Z' // Same date and time + const relativeTimestamp = '2024-06-20T12:23:54Z' // 10 days expect(getDateDiff(referenceTimestamp, relativeTimestamp)).toBe(10) }) From 1a5c05cb66faef4f72f1c336c60d98a290466976 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 12:20:07 -0700 Subject: [PATCH 50/54] clarify calculations --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d841c5a..7e1133d 100644 --- a/README.md +++ b/README.md @@ -35,17 +35,19 @@ Where a `topic` corresponds to a `discussion_topic` and `post` refers to all rep > `{course_id}-discussion-summary.csv` We have calculated summary metrics for each topic. The csv with the summary information includes the following columns: + * 'topic_id', * 'topic_title', * 'topic_author_id', * 'topic_author_name', * 'topic_posted_at', * 'number_of_posts': the total number of posts and replies in the topic +* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) * 'median_posts_word_count': the median word count for all posts and replies to the topic * 'average_days_to_post_from_posted_at': the average number of days to post from the topic posted_at date. A 'day' is calculated by date, not hours * 'first_reply_timestamp': the timestamp of the first post * 'average_days_to_post_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours -* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) + Where a `post` is a response to a topic, and a `reply` is a reply to the post. @@ -53,8 +55,10 @@ Where a `post` is a response to a topic, and a `reply` is a reply to the post. ### Additional Explanations - `A 'day' is calculated by date, not hours` +> For instance, for the topic discussion summary, if the topic was posted_at '2024-01-02 12pm' and there was 1 response at '2024-01-03 4pm', then the average_days_to_post would be 1. If the topic as was posted_at '2024-01-01' and all replies were the same day ('2024-01-01') then the average_days_to_post would be 0. -> For instance, for the topic discussion summary, if the topic was posted_at '2024-01-02 12pm' and there was 1 response at '2024-01-03 4pm', then the average_days_to_post would be 1 +- `does not include enrollments with no posts` +> The calculations are only based on posts or authors who contribute, not expected posts or number of authors; for instance, in a class of 10 students, if 5 students made 1 post each and 5 students made 0 posts the `average_posts_per_author` is 1 (mean: 1,1,1,1,1), **not** 0.5 (mean: 1,1,1,1,1,0,0,0,0,0). ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. From ed1251b4c798630b0d08ad4b7935ecc13a17fcaa Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 12:39:53 -0700 Subject: [PATCH 51/54] use 'response' naming conventions and descriptions --- README.md | 41 +++++++++++++++++------------------------ image-1.png | Bin 97352 -> 118471 bytes writeSummaryToCSV.js | 18 +++++++++--------- writeToCSV.js | 30 ++++++++++++++---------------- 4 files changed, 40 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 7e1133d..bf68c58 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,6 @@ # Canvas Discussion -### Data -> `{course_id}-discussion.csv` - - ### Data > `{course_id}-discussion.csv` @@ -19,17 +15,15 @@ This project pulls data via the Canvas API the discussions for the specified Can * 'topic_author_name', * 'topic_created_at', * 'topic_posted_at', -* 'topic_created_at', -* 'topic_posted_at', -* 'post_author_id', -* 'post_author_name', -* 'post_id', -* 'post_parent_id', -* 'post_message', -* 'post_likes', -* 'post_timestamp' +* 'response_author_id', +* 'response_author_name', +* 'response_id', +* 'response_parent_id', +* 'response_message', +* 'response_likes', +* 'response_timestamp' -Where a `topic` corresponds to a `discussion_topic` and `post` refers to all replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. +Where a `topic` corresponds to a `discussion_topic` and `response` refers to all posts and replies to the `discussion_topic`. If a `discussion_topic` has no posts or replies then you will see the `topic_` columns filled with no corresponding `response_` data. A `response` may have a `response_parent_id` if it is part of a threaded response (i.e is a `reply`). ### Summary Data > `{course_id}-discussion-summary.csv` @@ -41,15 +35,15 @@ We have calculated summary metrics for each topic. The csv with the summary info * 'topic_author_id', * 'topic_author_name', * 'topic_posted_at', -* 'number_of_posts': the total number of posts and replies in the topic -* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) -* 'median_posts_word_count': the median word count for all posts and replies to the topic -* 'average_days_to_post_from_posted_at': the average number of days to post from the topic posted_at date. A 'day' is calculated by date, not hours -* 'first_reply_timestamp': the timestamp of the first post -* 'average_days_to_post_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours +* 'number_of_responses': the total number of posts and replies in the topic +* 'average_responses_per_author': the average posts per author (does not include enrollments with no posts) +* 'median_responses_word_count': the median word count for all posts and replies to the topic +* 'average_days_to_respond_from_posted_at': the average number of days to post from the topic posted_at date. A 'day' is calculated by date, not hours +* 'first_response_timestamp': the timestamp of the first post +* 'average_days_to_respond_from_first_response': the average number of days to post from first topic response. A 'day' is calculated by date, not hours -Where a `post` is a response to a topic, and a `reply` is a reply to the post. +Where a `post` is a direct response to a topic, and a `reply` is a reply to the post. Together the `posts` and `replies` are `responses`. ![alt text](image-1.png) @@ -58,7 +52,7 @@ Where a `post` is a response to a topic, and a `reply` is a reply to the post. > For instance, for the topic discussion summary, if the topic was posted_at '2024-01-02 12pm' and there was 1 response at '2024-01-03 4pm', then the average_days_to_post would be 1. If the topic as was posted_at '2024-01-01' and all replies were the same day ('2024-01-01') then the average_days_to_post would be 0. - `does not include enrollments with no posts` -> The calculations are only based on posts or authors who contribute, not expected posts or number of authors; for instance, in a class of 10 students, if 5 students made 1 post each and 5 students made 0 posts the `average_posts_per_author` is 1 (mean: 1,1,1,1,1), **not** 0.5 (mean: 1,1,1,1,1,0,0,0,0,0). +> The calculations are only based on posts or authors who contribute, not expected posts or number of authors; for instance, in a class of 10 students, if 5 students made 1 post each and 5 students made 0 posts the `average_responses_per_author` is 1 (mean: 1,1,1,1,1), **not** 0.5 (mean: 1,1,1,1,1,0,0,0,0,0). ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. @@ -93,8 +87,7 @@ These instructions will get you a copy of the project up and running on your loc ## Authors -* [justin0022](https://github.com/justin0022) - -**Justin Lee** <justin.lee@ubc.ca> +* [justin0022](https://github.com/justin0022) - **Justin Lee** <justin.lee@ubc.ca> ## License diff --git a/image-1.png b/image-1.png index 2f1d6c6c04c0e6786d6e4fb4c298b49a0a0dd3ed..c5ac2082b2db1f012c19af3a46167832a503567c 100644 GIT binary patch literal 118471 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

R>jI9uh^bJ0s(N$gx}FKO6t)&g||E1;r0b z&F*^pV0!B9+Tm$h+{l<08oI!JmA55!{VrjG++JA0xd!|hT;wR%1St3gRGP|3?BZ_p zhMe93vRV?86GhwXV#`W5Kg~nBUTB*0KqsbQK$)mO4Vu`!Mzl-7af1P{6 zrd;XwRGan?x|SR$-g$5MB79TC;dMhUDxgz#?-R!walvmgs>F%BK?BJ>@H}UQ6OmFk z?MsU7;D&fap|rX+hVkM&y_S?{+FcqrcouW@ZPq&@S(+{6L|V(MRjR;O%L3wt`Is`05T}tiwc>Jtd;EYZPaJYYK{t>?>)S#s!+~~^g zXN?JOx-U6E9n9J8?A|00GEd@S>0p?ak;zdBBw6y*<4^-h!Mlq}E2W51d+wRllx3y( zH$8>(QV*&>jwLWue?i!9vy26oeVEz&)@e`F-syhPB3$wviK##BO}(kXyr>S>#)|aj z&#AWGk|1REQ#(T1=grNAp(vxHjG-PKmNm zyEmAc^sz?^O-ba@m4f+eM<9GZK0Qw|;&k)XZ53H;S9W1fc8KNABDty5@$w&zlz=yb z7zsk+_m@2h-z$_2hf#c(Rri$et#-oim$3EDa6SSp-)rd&2Jg%fQ=<uTWQvg`~yGIXnefa|1`rBz%-lv+?Hv-E}PHj?z9RcGJ*4lSP z=FEBQ48gvzKI18uh4#UjcvZH~8J-ksF8(-kM1u}?du}>Qs=#JQW=n(oe;ppgKhCnF z98Lxy0^In(3rMpVa`2Ul?~apk>}4%;Xc*jAT7yb$@%bAs7SSGpF zxv5~70j?PkKn>OiE>8=*nAJ`Db-R$V)9XbxsyGYfm!!!8%g~fN5V{jueW^sLUU&~y zC$I()CPM@fm)f^S0?W*SY?CiSC;V?POWYSqA9e-0>ix`(AHQ1QlRt&HR*;cx*k_GV z?p$uN9}Mk`9v+G8x8r*T2sL;T<AflZj>w0!qxHLrZ=RNIZiA+sHxNZ8@?I+c&l!%bWCZy6yvJCmd!KTUllKR8}mEI zgpl&6>1nFK^TE~Q8UIxf@Qvj(d(VS|Y%*?Nq2hC7!5i_~PsMOjz2&XZmzn8bXP^ZU zBasz1_9h}EZsdUP1W?>qr`Z|(H1k?z_UdF!s zh4_X7v)Vq4jBR-%?qr^lP?F<;;3g6#Ax|4BaEJQp#Kjup6k?)Ih=mx)C7&uJhcK5V zU1vLU^VBNfX}K#G&r;j-s;mcUHbUrfkpSs;cEkVZivNh)eU8YxgxuSmcA=L8&f^Qy zm|K7pu?ukK`!x@9agOGr)wr3HgV3DC;x@-#3H6xLwEf0t3G^azR5y0?9l!^BHHj}S zIQTOv5xui9H!V+O@r|srwiXeo|10l}D2^Sf<|)(@F0p@d(Jx(6NF2G2*!+8YoK&^J zvBJ?NAF21x0koWjG+C220oRw?b4ufK{>Oy6qI_(O-;0B8^COHf4*iB4IM|jxGii=i zme!!f=jG*DLWZB4(PT;c8Y6KMG6e)k?;%U7hD3NJN@jrKGD#sZ9xf>oDsZ>_vW|V_K(`L_WcXfMPO({%x1RS-(&i{HVWLOS1<};TTnA3 z>LO6RAd_YWTkkXlv%`1k=iMkl<{b&$!O4P%Hfkj<(9h40X-B9h5*Lb3RD=eDHQF9Y z6fKa{nzd!XkFoOob}423cM#(v6BxRgd!>5+ZQt>W+Q?1qpHlh+E&+7T*cnuW zW(3PjJr=02!Utjtly#pp?iKrhZ30}QJgeAEI)Srfr&ty4ZrCBd@+d1U2k%t&7k$(` zsbOYXxkb`ush_7&^jH<;eeA7-C7bkfUh$QtX%=M2|Dk;UGNfnZkltdVAH%S)>y9O| zE38U)3KZR#407ZUw`y>ODi^ZUId4DQizJfC%!C?K$fqUOnC;cxa$Ztq&2>=2IKiJ8 zbLXfcA~DC2RcMsvfG00WRR>gHnI&C$-V`y1XWj(F@9JjnA6GKw0^Kj+M34NtBt1NS zD+4m6JhBfIbajcLVPWZ&jHYrwp%)@AmKtAPZ5L=<+waMZ=+}L%&JY(T&hA^ft?D8i zZCu8PEp5}DgsPRJ+q071Mq{3u%$X@0IY^>-vQWEXE%}@`j}kgq0yUK?JU< z(|ZTJGn3Ye)RaeTqWnCsgAtGB)o(o5HC2nL#-)@V<3+UE;WaH&g%CtEqjKIc9RyD1ePr=m&#p|4vxfF#o?h~V* zwj$3vYg8l^Nt?R@U#hQJR=tHWJ~_P?ND1&h60)es{mm$Skg*~op(F!CK|wL6>ze8n zzVSVlUd{V+N|BvHh%Mn(fcOepcxbg%@E4ETN}IC}WA2Bk#%J@V26nLWdx^zJ4KOz* zt!=lPjsu2$Z83*;CTR_2Me|a$ZNrO`LJqo#Y+{T~-!K4ZAzepnJul9$;W31Y_oc)k z1jvzJ@yu#mx@W6>uV_St^AZWws1Iwy9h< z6_%8g>&x3*-1yWcTl~5;u_lcP41{u0kHC^~I>CZ$5fXD*AFteu5OV+Xpl8L^gLh5-@Go)pMPsaE z_k&?d=vK=xjaiR2p5D{U z6bX8u-@-c6EYzR9zR%F{2bZ1|CF@XA^Km}=)VpALuN-LCMVQo?)y`AiUU=rxU@~X+ z@VoFbGcZ{#%VRpp=zfxEq*1xG*Y}s=NKOZpU`Qw zFb9z}5&wL$#H${kA^2kH!9y4J`P_hKRnY$1sFvkH=ZYF?7G|%@hmtFf32IlAV$%6+ znLaj8+3Q1YI7ms0dNY5O8c0?ebbYcP8JbzG1A~KK)zwq^QiCSVk|{9{{A1DM2Q1Z=Q-B3$HIyVLrPD_NwM0X^O~7O_u^P5G70;HK)y7@%QyeSr z8!Np5n3;fuvkI65-6{tHsPFFv8s#Xri2cz-6|1P^B$d@O0<=UJh!;~1Md?0(V=eF; zBxzP!E!S;L@vSSD{oiO*0kgdwQRNOzC}4`>ED!hi4cU7i(=BPF$bFI}xjn07VOMk( zjMe|Xx*I>Ex{AVNNOvx?-ILX9Q4Qdh^`a}Imqt)g-6otUe{bSvOm8r34ne~8ngmZ)!YY>>rq1%?0ex;$ACBS@Sl zMMlT#8vS{f<0_aC`OuJ&GFm*BI2#%Z_m~Jj-~ugSZsCK?NHU(rWNkK9k2gWB}U^ODzaTCGqFjlG7%kY8317{K;%R>A8oA^}Mzj>c`P` zSDtcP=Y1=+ulDB4C=Tv;LDz=}R&F6-bY<1n#pf*|UkH~os-EVcF;Ne8=u@88@xN%r zRhD68;mQ@5q7*Z~btIKt;?uIRrhe9o6~|fS(h1_`Zk&=}W+)k}3{p-TERT55SY{Ur z-IBP@FF#F_CEK(SF8-}LH;rRgRpL$W_@gR6EZs5&!$-*@@Lut_2CnTIXO@<=wYqDo z1{A|N1?#){LgAXMa5D|_0r9RtNQ~m3>}kTG&tYF*-~vJa4a**<;L0ah`B=b|I_RIE z0YpHTE3RKh-X=%vFz0-wy~VEn+VcNn>n*tA>b5pfEKmd~+@Wv{PH=a3cL@Z76Wlep zySoK>^;_8^HF4&2r6ZJGhNcV;br-$^#H@ATT6?T z!(y_b(!DH=GcBp0MIKa)k0-WXin7XlZe`5Qm#uEmbOLXW=Yp~n7&feJNQtq1tY7DKL-GnJsY zJmi>`FdzwT*9o0OLpeqyyv^aIt%QFvHTWY18eCdyl=A*t3z=0hiD_3P(H&l9_+J1kuZUvOCP%f z?FIsZg_tvszcWQz8nf-Y)1%|>`y$#scwwZm&h+!4?T8#lO%MH5V!>7@xz~Kx!M<~V0LbMox&}y62hrznL=#VE`!FDeK1F^ z;kxdnRMO#WCw10m6*4Kmo#i&8wEO?%sKdaUWAWbGqHPi_h}OL zKWMpJ#|ycJo{Du|@lL=A1z`ihzmMiu`1AK$)g`!N0zF&>HdogW zj{IC~x1E;(e|q~&quNJ*9v@CguNN=A^A+>fMP1KY8=xWlls@`6*OFChk#|5(O(v`~ ziI>2|$C`;$$dVBm;`Et~R$G`3Z|YD;9ev~r~X9Jum~FibR8;?-5g zW*tS&!=Xj>b=joXFf{g`ve{m|p)Ea@_M%?-ZbjGmY0XF_3|PVg4sfzhke%YuDP4EE`-?0;RuO_ZIWK-)Eim@myM zyDwTgNAKf=?LDd-_)EWIf3QMniOe!|H`UfE<6Z@1&hf=aH@sGwoel5aS||KTvqsX^ z57GI?g#_+<>DTxNA5r8%J9OH--QHjnu;PIbE3+kj*a3;lDQQI*BdOAwK}|5UmH44` zdP-EV^5mV3(QI**7jiN(r(zK}{^%r?+vPwoXF_*sDOb~mzte0p)VdA2k~%)FNsy|y zyD<(PB)p&$hhFe3kx%)n;3~e0-?yWR_v%J%1oM_KR50v(9`DLegE#wq+ANXDg`M() zf`a0=k39ge8`@)X)Os5kV(&qAfNOwnjAtu-KdBW7 zR!u+Aq$dtZ^%nAp>C2RI+|lovl=!65Ft{3OQq$qDRxbUduS()_a*^DDfQ8P_03JZ2 z?;XPFzA%IOw}si|=%(56vZ1Dt&H-=tdLkxMo3K{h%N53Dl(0p##(8y&`9${FUWu+; z3H~>~0MWPIy~N5uQh{{;{MXXlGy%ZkQ}4b>Mg47JBtyYAoC2c@35JrNZ^-$aYTxoM zp3?7yn{Ta|&xKTV81YU2d0zSoZ6XSHuXToDgWs(@wzDAngDLZ|^>bn^M`6_6sXF-5 zDAQu>d;DEzPzUKtX?XcY3{B9%zK6Ri z;7j>!ZwhXdd5WUh_wOo3xhLPQqXKiIIPC;wkc*{s;Kc&1Eh?Qn>|lFWLm5-ZK;{lx zOsHN^Ck#F)!6|N8T2Uo7QXpzhU z(Cf+B;$a}^>qYpfLSIc_swp*NtT(p}r_o5OBocazy0ASt`m91!4gG{jd$!$&{D}=0 zw(r>Ni|TdVa>^?-ojLs3(hfQ00WyI&2r*N*M_aGl!k)0tWY1cEoqjp}d^&dpmrU-)fMLV0va#C)fA zO*KV*C*&^=SAzHR;K1$hOuEJGsyFh-avtTgS?*8Z_Bj0?Ya##qx1(GNjw##Zb!i}D zOR9SycWLWr{-0=rBOV7$vYOu5@6pxgw|yFaiif(|BhPglk;HB-+vZkKpUAl~zVbTqqQWXTc@On>-y)^mtK!rd7tm z9W0pb6+$Q2CG^j=evo8iZ2mhMAW#oQBD5UZs;G-_{gWPK|LRIwT)d!ADfaln%224W zlREs(c!)MuSAhWSdVMaOP^fgerrvp5EG%M9fjbF6eZoyi%c0QOFZ7!P5xswWT$YxR zv3T3~;9B?8;z9I+#9E$fkObG~+Xup%wTxmc+;EMYn46vZyt4t5#QI93wMx9EY=qPF zRg_74QbdZ-RQ2p9ua`;h{KM#-Nqg6wghPcP13^w4G3;C1S1hEo5|7zs+Vo%B8V} zwKS#`dY|KB3PUc2u8LWfn!mWwG7$QE;fe`j2(r?UlZ(cNJ+Fr?9@sPQIA#f;!zbAT zD^|;(^2|RX%I2@#Mu3gp7n`je9tc~xNghCN!jYQ@`unE2PbTkQJ3(1BhGCqY^#cnp zh4~&E3pF*C3k)4CgVrdAY*5V`B-I1HOo2VDv(nVZ!A+9dDB((>@-zChMif{T1*8Dc zHA(JAKi4m`GsB$gjHohU9xyx?_FcZ`qri7%>=9`8dUV^DG2PFR)qG_K@23QX4b=9> zzxhDxiJmrJ^nPAEISx#IpPl@0u8^)hz+ayfjpq``5|koCr>_6bbTQ2t{3?=h0mYM4 z$Yac3e~9&bw|z0|q#&QaqTjqI5d>Z*6CHC}T#HRdZ&@xA56X7rbJoB3$-^v1+ssygmJw9&uz)k`QybAI1L zsI9L?y)cZ*j&ccP?fp)4pnktum*5)bCBZiJ^tRQqC)KUHpcclB~?1Nc*?>E9fPI%+N*1ie1ya6EK2nLvMgf4S&V0GHI~fwKV{xY(pd z*&2m%_+Yw8WQll2Q9nHhcuN=wp2DM2FaN5>$Hz}Z73ddwHNpIjZ`{tcK>hbkdpU3m@ zGJOf!;5;Lph1=M1ee3mh?y3I27ZmWojSz-_`#JabZyY-|SLt0aC0Yarlro%*xk96F zK`Yywlk%K?Dkqn#;{~Vba(I))Eah^$8*3yEvoI92Pyh^ga7b5^LN|F6u-g zex!wb9Cc9&jt$Ag*to<%V4_< z+Y9UtMB8&O+d_f{KHt@vkB!ys6Sm@~e8evYS9V!mLFeZ{A$bZL4N)o0Z z>&!R)882Ld)q#e_2{1t3|JyT`<6L4yW;EH73unK|=j|jpn*aF_(_L%5RU|)C+c&PL z4Rm|P{g*Xd#)0B8rn9L3E+%Ssxzm?PfD$uv?@%ifv1u?nE8-MvwEfqC@-JF?78)`Y;PteZ z{A0#}VA;v0`S_4 z^hNZ1IcqusTMPm;b_VpaQWkeQdjg5z>cJh7bg$0m;4CrTn~3G~89ir(%n9r_u+e5S_y87h&=aU%MDVxi46d>0 z7v<=3d}S6qPFn~9nT1g}v4T0dgt+)N|Cw)SysEYJM|Y$4y|qcp1N^qLCfEg(sD8r7 z7RZ}g0!b3JTeVs<9HfXCcAMYB`ZD!!j-P*TnGmwp%5$+bCAn~2HfD_%CrnK$_jAo& z%3azjztmOQkUi+XIBCyxfFTQ%Fbtj;F@(O`9%dTrcVr|SCc#)~WsWbggV%Z}@*N%z z&M{aiy9r52wAV0c_Qd(3f{G*)+XLY=e0-Tja_QnbL(#<~BEL9iWOPw*ruLzQ0&0ng zwHVq?Sqf=_xsRb7fZB<~08v4+Z>FX+q`oBg(E8jERIuVhlv@lg&6{=N zc&|~?)y?R|g`wMqz@CG46$zjI&8McQm{b4Tk)AsyryD;lP*a>9YP|Xu3!EI5lVa!3 zq*G@W*$Z)2_am2-aWk-RNirOs=9!Y2S!s_k{_jDykN!L}7njyREK7|l-movf9Xr|#r`aZPcXE3)YjL^R6NVV$h@)Xn$A*fE?awU| z0JIj(YG(9hJPv6lW@o+^8ZIm3>!estOOg8_oy_T>8Y*`UG zzIjZIHhQf7y#9d5dgEIdoDWz1O|FrLl<&&ZBO=EmZT*Be7*mwlm;6GinFp)ESFI9% z3j4Rb2(M~quBl1W9?~P7;(lXN%&WFAj6zFn*07Q(iI=Co_$}`N2EDoBDe~j6h$*+oSw)7p#U`F01PNEvbOQO-wGBrK+mR zS-(+06cXJ^3`B_`7FHw*`J5UdMGzX?OziVdd|iXC+A$0gUkq9ac5f^Qz#C(usUGH4 zCYVNI(Eo|#7d+vzf2$va@OlZfWJRt>@Nd4)K?zVwP}}g}FYW94c)R$0Udx7V8bB^e z5YiAis&XUYVF;rUlZ-O=NfbCNHivnKO%LvmA?BDCkPK$e(I-Y0!ttvX&b~dK53h#7 z!}BFhQN%6`LqDKQ%BErRb$ zGRRmh-Z>2I^^1+zn%QhK`rVJ6Y!sTA!UX0l{#7s}*Ffp}W1qN=pgW{Mh`z+GU%L<> z--a52G8F#X9Ks#k6VeQd39SF)F#c06|1iFnZ+i@ub#Dr`F^&ZcTz>!$J^h4ybby<25dbNG@pa54^W-_0JKG-dw^6(^~$+U=x52Gsm| z0dn>l46^gb`7#Z4_}v4F%$raH1T{!FK31@vzd``@K>-G-Oub>#u7UPOd+g7dH7i z-aety-mWeT9o{d>4Yhc1jklncaPRAdGC(os$;@{{g`qd?6cuTS2Tl#XdLozF0%(bW zS#9o3$<}LwHfpD3!>}lmvx#R)_m7disA`oxrh@HK;b$F&?>$2@@+Ghw`t~(Lw`J_7 zmpEon|8~D;0%R}%e7j42|1Jni6aQg;B>vS&j(4kyOqMsQiKzJ8bJW2_fZb{b@16In z^89!1GC7=W!#ESN&roh?lj-9wH^r3l8ZHqWr}zT~Q^A zRZo$_lF)PnAa5c2v^e-;KVvzkgd7sh`7bv!q2WIDi(IrF0a;3Nh!> zVuOz9W)R2;uHo;1+x$CMQ!|?(E4@1!U{DUir&9t2)UU+~IyFHWN5niL=8;N#cx=YKZFXq+sB?Z3mp*9ybV*c1d?Wnok29NPg;TuqKBuiW*?j%D z`Su47H-9x>EGoiLH^5c*<)=Z8&vAO2{maQys)KApSI|({%S+H00C98ndtZvEMbV&% zTvR7#MrPTll1b7K>@$IDP8BnQuY{3Q%Q2&UapG!$^yM^9Ox>>)o zmE#mt%V`tT@3%%aEJehw4k{MVeWsk(XqaMr_u{%ET$G4j-aAL|;S6eI7_}paifjCm zoi*l`-0KcE8*5z{rYM@r380LHmz4a-tqc}B`=HH!pMRtgU~HS-x)Y0PM|t2BXu{V@ zXZ0Ofm@94n*u9if{kGu1t3D$;>Gc79oY)Uai2AGKB{q~oHd%=QR&i3KfnA>y87%ug z^?OB2|2BUzqyUBvP!;uYao-wX@X{>uPy?A_0#XY4e0>A4u&e;Rg74jpv4j(}i17rn z@3|u|a%ASuLM!lT##5Y7p}%-V(*fk5`n+mS1Ux5dZ2MdbIBN!TUMbH6IA}l6wzQjM zxThi!TTTodTe2cYzX-nQ3%q?SQJNMt^wku*>}G+!CT*zcbe@=bU#X~tuoO>BQx z-ZEkZHIBKW5YJ~EsmxCZhDg@z3BazXtu@ud6 z$g2}U3@lELbqN(4&9r_GmVK;*%{kLo2H(P4{7Z2@;%-EH63KAh80>4YF5v(qC*S>2 z!w7d70aB1|{u#>LnmBTB2}=x-6Py;+9bD3(Nd)69@HiU0EE$Gg=T!WUZaM|++ zp`V8e$nfRahQi(qXlJ%D%D3qjJq~FvV4VJ#QWfpg#M4)dxgf^GY$kfou?=uD=C>Xd z9ZC^gnF=1pf6Ui6N7yz#%@_FA?%s=e#RMCRWwSbTC}J4s3<=!=vcC|CM}N$@h>^cQ zxP?6Se-DVP^@F}nXw7jOM%Nr&Orpn+LH2@g2kWjp#UP3WPW(Mo5nq`b?dc~GYRaUa z+%mExTAeeqqMO_51`Vp-y{K6Ri|Fa!hwJ!yng{s?(t7@U?am;+D#xLf{dpdaP>ZCT zq2oOxHGsk&vOi-W2c|HWMd@Gdk^EaR;_CP>!)1_)xtbP{8TvveYG{m9n-{R)`nP(j zGC}8$;Yk4zqRSm8GZv?(sCF}$50eExZ^o$suKiMzVlP%tn>^pZQ0JVc=}UJBTE?yb zn0y(5NI(5AbW(B9N8Ph_>_-1=+d7UX%vQNSOT#UmGTU3(73>}KlT~n?=XT} zPUVb*GSTrbHt>gXCnSR{>pyXl5CViVLqy+{fCWLsKK(-tS-@ku6v+<~g?`8_>Kz$L zvE3jxK=Shr-r4Mn^kCwg$ToyXW`+poHPrs0${f1WYL`#fvB>Gcq103rXCQUx&=$B4 zPt9xkq8s2w3TobhBgIM~MOr3(V6qb>paCtQ7(y5;pJU#V&E#kL$45cVfP{>!{lm*66Wz-5@^OR)Lo3O?D&96 z-dk+q_oC@|TQN;&8z^;zS7tJ@BG+^J;JTfe$W|=VyRuush9fN4&QW?h{KLUm?DO&b zlXlWE3ziULPXc>`HT1r6v;f**iBqG4-rcKhW({kia{LW(G~71op5}_Rg#PdEZMwcK zf^_bVuj4Bx_elaC>A|7j|6K^X=_n|ejbX%6&;@(UxY;Ujd`5%#o`N&7E17L|6bO(+ zSR>BNDvmfOKNBH9`O1W*aZG-OqC*)SC%)`o zk0Mpf@E9GH-NuAMF|1-2?|8N}40ol(zRE-mH@M8d8_+z%ZuxTSaLYTTZ@E@jF@xNr zb4=ovi+sp|(@YYl{w%cJn{?kz?>3quL|A?&p-&1(?u_LhX!wd$=~Q0MDaAFsqAgJh zdZhr-7&P6r68n@!7c30nyrO`v6b+ii$UAjCK4Y)?v9e*>Z+^aKgV6%`6XDg95^vja zqHp^$^>0xxs-W9s&c(PNS;so(5D9NuoU+z9h=1bBoWWiDl~r>3jPYGf6p3ZKZdk6{Og(Zr?})}s~3SWqXJvou^_<#8ADN)^rDTMt#ZPv zbcj#u9BUnl;`@gZ?L<{h%6s{QKy{OL>uG6w*fy=&_YWd(w%u~k&w$zr#Y+r>hoPg% z#cWj5Te)M`RE~?{7hI6A6ZS#u(BOTL@Z=O+)3oX>BwKv{e~Eg=#URjaWqXa}e+?JF z$AbV?si%E^tN0S5!Lw6prV)EVCFPv)F3uB`(k;AVXo1;b0W0)`p(3lPf7ZIdj~$D$ zv}7R^aP2?668!3z!8floI)8&AFaq89m2cER!`ARua|&^|q;}1~MrOrMgq;*wV-~FU zj2TT;K06r_y^e^GLd-l#7fc zZaZ^BqGqw)er3o;x;;g8PBG79df#V`kNVFl z+OxnBIS;U7yNK=68UF-&If%Aw5cEW~FABEAsS% z$D*`HX;y#}@~Xa_sATS?(r=o|P|H?~f4e_5&1Hx5S=(YQ~doMpU_a@7KimqFQF~`3jc%z@F5Bbk2ar`upCN6DDZ^l z=54fG(JgCPu0T&@j~TF=Fc4OLDF$8W?hT)Zt-l?V4s|@d5*jHS29pu@Xc}BObhF ze9wpZr3YCa=fv_mt3EyIsp|ZXrN15=*M{uxueW58+N;j)sj@vCZpEdE*W9R6r6Bj9YC}** zRA2Ng;VT$b?o23CnS>?$YucX&&8DL>Vep@7^?%^@96HqQZ-_62M%(02EXNsoW2Hm{ zxr69LW)4?&dhl;9YeV&>+Z1e^Gwd8aLcE6nX_ z!xI)bT}n5UwS+CBc@kM>%0>wbNN4;Z;+(x!tVO)0_+?Y>z@a$XBFl3>R!~09MB0x2 zZkZg`l?OQP3)U0nLA?-{y$uMc(A)1F5Tg`3;2B`+(i=S)tOK`8{Ahx)m{865uOqOFqclHCf z%IS=qPqZ5tPWnN^{krB`NJ~s~ig?hj*f$*&&KaqquO!^R8UhJ)FFaS(^nbSvKD4N* zp^*>liHrhuR!2lcJcHgZgY9gMz^ugK6d02rAxwymR~hOz#f%5b@B(}K@>Aa|!Bob+ z)9E^!&1&f$NUR{+#f3-pZ!2%(dB7-QU@%c6xa_@jM_Rw+gBk}id3jCI?->YgC^gOJ8 zYH+xCySD&>C0F_@c| z-TY-y)e$$C7Obmd9U+5~NJaZd3~^2H!r932SD~H&{O9agP`bUy1~ZHD8pd-j4KYC` zgyH}(lwe|vs}&L(5)3D0rE?2~huSrefm>8NtF*jCW~|! zVJtsa4_+DQ1T+h%!bEKcTJfc`IEyI4jwW;G^D9%$VOzu+K=@n&wA-Am3Go9(Zn?uj z*HEFFqm=1LQ96vC+8R6By>H>@NmZua`U(S)FYg=CyFECC3>|=Q&C0?(gc{sgiW0$IuN2p z_7U5`l0XQfnrL$5!CP6wp5w3Do`auXcwPndH`47M;>d!#+b`7{Lyx)T-+rbbNwUP4 zh0U4hBz+=A4&mf2zak?qAgPRn-6dWne!T1pbbK`Z1)Av<$GbGEz9NHRLEGD}^D81B z7AasfMjtBTz(3XVHyx1-;8lb(XU1AV8WnddsUiZI=IbW-IW~(Eq3Dtkj*5HdT3rr6 zKjnB617neoV&%OZW06e*U?z+LxP3S4-*ReqL&39&A2n`XR5);0;=|i2ro*YYQogz@VfP=eXxj; zH48zty@ifnx68UJQG%yBUj zTUV8{ibtKXxO?BeR^QH+jV0S9+P=IONPmYBDsS`5r?&7a%KM2IYT6eX>OK*d`E(JgV)y%xAG8D zw{xQ5WsRTDz#?cPK8v{|in-z0CvU%$3!YCPEWt1Cq=p&HV0Vk1I|;F9^P=#VUaY2u z!Mk}Uj2Twd*Z^XH5Z1A1-Z>Tv>Xjo4s*T?2YMt<<&<&6rS5nLz(bz|r1Wu?EzI6Bx z!>nq5G}N$Yj1%$oWdH>9HuByM9E?HH6yUW#--p1&=&ft5OpCQvDX6dRMgMQ>$=`r15K9(=l(hQQ z?&QP5m!jxnCXPPYVtlU@miTi?9fg;M+YYyui}>{E3?N2*guHxzQ5Pn?7I zlOyPdukQi%5P8`5Rz(JcYX_GvKUeKqb$E0?;e}15^$@u~!!$OknHyw6FyM z|70s>v%?paH~Ywm_|w=y_w4B8&Cb{C!)k5CwT~lFBBKDi>(SG3*Z_af8ncv$bT{WR z?}6O=dcgOh#EHICm1L$8d%HxE*RL+%?zQ->mB}7Z`&07!3N<_r&w6ZSohkj~Sl;9h zt)<{0VV3BxlAq!$qEDA{0Ajid$CwCXB<WWc~MZTTmm*=C)`y)eE2U0T-1J_Ew>s=vm|wcc2M zOn$K^FHif5n~U@*zE8#udu|0F7RXU&5bl+FiT~m48(P_ zTKRFM?(8HJPj;b9`N*)`7B}?v>4n9T3AT;Q$Tr#(FZpzc(>B~osLgvEy8D4 zA!BV_F+=;Q#g){7wJn`0Q{8fa3@AuHZ$3WY7_UqEHYTy1+fC zIe27H=J1aROkQ}J2zBRS8~Vf?-*PGJaYnr0&a~a7@r#w7-OqjX-VQ%&1pWQ^aT0~| zb-@dc#YRz{Nr8xcWP+mCJs>ELSRQP>_#+8ZzMJcP27=HZqoJ3hpX*)@%k!d!A*~#! zSP`ZULt;^)!fmP_lMFh|6ATs0#BFZC2|3BJr zG2v66MfnW#ktN|AP@NhEhoTevABz4AOB{c}3z3X=xN8l=w~vM0b8f*=t{Efwii`K} z;a1j9cB`eo}->hoj3^<<+2k|SyGs5%a8CYvZGcKn(cX-m!f8&AF0P35|0tu zl+L{HfV^U9R`@X`z7b}r3p3hlV^fC0L@YPyyVv7ZwzCV>!{Yay=e=kyRFKa5G4 ziUEbC+{NWlo~s6**57BDN3)TiS{&ig!@kPqHBbe0dtBf_Nv&4eu@mn&_HcUMZzAvQ zS>o4xX{*~=ORmi^^`rp(W$n~KslfLll8b0qTW~?d7f~v2coLj^uXlac?QjdUPt4A~ zSY-S|F{O(G^9Kc{yg$o(jfWXJp3A0gG7RT$Sd-LX93Lp0{E)U-k5P3uT#@dDpCKKQ zZS7$9{ET$A6n?&5Gn$LJ)PK_*>|B-qV5Uo}q-Q1YXIr6W#8Kf`RC^L;w!uRK9Y7AK zCk3sy#qy`QrOM#hGD@FBP16wr8d?qmVnc6F=0_w$ z(wSzQVGGkuwkXrnOd2}emQRFhspThbyQyiiu1vf}9Zp^Z#{}jmiU~?Dd-p6xjndS< z;uZ^-z}KIaJp%bN251+Xn9p7>bUOI-UBo`X#gaEIXYK>sv&AlFdJ6N)oV`*DRmiD= z;GE1^onYtL{2(~O;*{@of49IX1bGKknZ?)#cG>gvG5lFwg@c=Og=rivaWm4kF9mEFp-9hGNc6Otqg}@(#=^kY2L#_4TK17$_hjD zXN5FZIBTkMHjob}Um30Bs)ua2wO zj65C`F{aq{qi=L7K6aVu*!K5^59JIY4zDw@a) z<5Z!gOMcV=hG({CE!rjZ0wFN)-zp&O;4N>9)Gzq+v^_Jh=78MN`-AwDCa5cDGaPF@c4@Czh zG57Xl+0Ju5+Ha8Gj@LcR@9Rrxk!DDNyFt8@j!!o{aKjg^rnisj77TJ+%B~TEeD!{v z>)N6XP7?{&;cAX|7wj$lTw2%yPh;$#o4s)>*0`m-wcg;ekBCGzF^)w6eqiihhvHFv-8 z6j%+_D#j>I_#>`otYYBMkGePq%cH#sQy@!HIA;LPA0xh#De|byR2X=6E#~kAuGEmL zVGhV%=`>nsw#0)wRtaI#zJm)(3vX{7gR_SsxN_)Tis_aayuxbWq54+%kxtFhxs9#z&ti!A zr&A}XHEdpcydxJkrf7}s>$gF@N4%ko*0)aWFUnZQNQn1mD-s`%Ljs3QU2pW(Ypsc+ zZbS~Zhf2K;-ybXVJJO7ejj6%%LDV_Oc8YisIo`Y0D{Pps@bLK?tV!Kw1*)FMAXGFZ zd26g%X13b13soWa$^gZFuYe8IMJDl1d;rc};f1(>_ks5G>Z-6r3PeKTpQ^5BypH?P zvEP}l=3AWZ?Ik;fKp=VZm2YnV(!#ZGpUB1A$E!rDj*lbH+WTy_A}(XDjk$Tj`_)xO zv~_eQD|~lSlDfNx8d1>wq5O>o_LQy7e#OY!iZ=*gj5H7~EX? zXLhJ?{Mbb9_Vl|JgZF;#|M#e!V2)2t=6OQve*!JNk3?}pYCM#wN;kh#{wd0o_4isj z&01}vFe>>rJBWM`AW{ysT{T+y7Q{rrgl0wJOpYX3M7$n7ojD9YVsxKK6YOC>*^*C{!gr^}o}CV}b_5+{p1^g%Sx5ZBpxZvIwx8SA;4HygRyIpa>%xL;>o zS>$7aTQZrFVy9LQm)EtLH0aU>mxxH->-jbpTtKQ_XNKfw*Y8n8)$_8y@qW*t&@-3# zHj8PU%s=qrU~XRG?&7>q40+!{U1%g%!Hzh!4i>Fa+Y*c`mqi9M5doFj?-WCWn2^aA zT;|U+f~l?wBRiv93`T`J{CZxWZs13eV!(Q9gD7Sw-GG3AQm{Dxb1@_|tm3zC1!-L+ z!~4-fIfO9J4;Ko3zmQazpTXL6`EeEWz?w>Y5|jajN~5wTS6~;rOwLtXZhWZS$pS#a z+c-NdDOI`kGvtFUP%p7)Sm3sk{jpgUqI1Xr6zG*HfGc5%LwnA&@851+qexI+mjvohWxv1fp=yt$ z`5h>PsGZGyJYK=;+P)S2Om9Cq^0I%qdfD0zNUS&e&MYS|CiUgd2XAl`!HryaPqKRo z+y9LC$41m{9!WhtLNQU-_1Tu#k(AnB+{frvWMljp?#xIAPmp_8e%P&nmlAE3aFJ6T zx~oF6#+rq;96n$LIn~wr^n%-?48p?Me;CKr5h7V#{>Sru*f;*h&~FZvyi@rrbGme5ZEZ7`c2W$kk}8<8)x2b`&*4!u3a#BgP!F2 zJ=D_tm1$NaNONlAQitVrw&%S}f&A-QmOHX9jCOMO$=tk-o59IWy#02@AaI&#l7k=$ zoOXok=2mV)>ciKTyCk>UnGOBIggJ~tBrc|Dr4#{dEOC)ml0@APPiNo_j z9~NT+bKJ0z%~d#djQ#}(`l*Ea#)P>tLgqqnmAQPmGt~b~#UNt1QGNB(-F#RRZyZkZ z)!^Btx6@y}CvGN`jz8yNFjHbgsiUF?WAm441`dG~+-YzIanJv@jmyg3n?c=N5n3Ky z)ynGd|6?1sOjdK{Y;kr|LE@`*!hHMR7Vp{Qe=Od$lSV&sF6cN`1&hGY ze55zGLx#4n$9z^|V|z0^XQAZ5nIMajKW}_~NeWEpOpCVe_?4AQO^ZBnL zM(A8U=K*L{tZQgYeV?EvKgFjVVo zFfeMTPxp7}Uh|pdiyq@y-rmdDk>6Mx2ET$&lH5Qd((SU>&Y`AA-3%`x!ga9#(=_MD z37O+d`pZ%K74sY;WdRaf_Xo!UFn26_L+s=sVP>gxx_+~a%rP)@tSu!1L;0#amyaeT z*|zIet0+MA^`O=Y4+C8mHJ9)3wM}C-rJu?DC9BSS_Wg6~E8~jA!_V2$mOV~un(}-% z#?!nOlYEQqYHIgT`0)W*>i3uA?@Drd=xTpCU)tq9MF#&5_b!hL<$3_I1tSMu4+0-= z9A?V=^N$4X3VNFglxK z7BMrk*-Zpv^dc(8IuFCotmB+NF`@0_A4TtJ-4<8XS>ah|zX`^GecwE|%X);|*U%PD zpRyU=yaRq_kMLYSOrg8IgiNA1EvcX_r@2%Q?*84*uiwmxS6vlD!g!j1!W-Y!U;tUE zgp!4w`J)FjMkvI|jP3{MS8L=;vZE)Q!(60jLLt=x3Q*YOud+hl4y}WO|@8|bC?>`*lIIdkg&-2@#Z=9zm!!ifAV!a(2&64^L*KP-P4!f?=7Ji%A zVe(m_Gf;8)nw}%f5MzX0(^#-vS9C>g+0nL;NXp4ucyKH~s6!}f-#j3*6=krxtTia%)$;0Jn`aP#} zpAZ7l7rht2y0-i3+BY)E`0AgX@KlXhpUtdUHs3Fwss`{4VOi1LCm&Wg^CxT0cv6rF zwg#SWyRIU%VN=k&x(0umq%UFD*0Kai3L@9l>J>Y!FJP}uhf3T}+s71E%j|-Oxku(# z8EL~Hkg5EWPfh6!-VaTMrP6(*-;=+bZM#ykwW`dMJe**OAgIvuMIGr5mO9^BJ5VF|(*JM`z4B1=wfiNzmzaB8 z#b)pxG5_O90_z<@AY3j=_e@nN0fQN*F`w9L}QMOyx#S? zyf>^nu18hxCV18LJ`zce<+(0V=l*g^OfcEx=mWk}9^>;X?{+6Y=!{`@m`Sr3LmFZ- z(KklSSkzqQZ?@0xrp&>c5UE!@K9UW)hqQUJ&Imc#^43r}O$6WB^tj4@9r1SIQDlE8 zFLq=Mbd<00PnSDV^c`aSj`ZgJXDL*Z z<2WjnbHmd56U3vB1glh@#YCLBxtvRBv`&_Y}KGPO#)f8mp6GEy(E0Y_rYHqznS+F>$Iin7KDoJKO^~Q69=i zKOmPHUOeYoN*FB`b@chH7S;6mNff+3Dxd5|!7llV%6jyNM@rJ~O@LuHt%i+zg&@IY zD^BalU_7NnU~cYjOzT8rgr zPf8%rlD?Lp{gAO_PB}e_R_;?1B8%s<$qr&(`+7*v$4oQu-FMF)eGlX&^jT%aVMs{y zdlDQ;w-vM;b}wCSd^?B_eQ4BudN%32s#u12F&^&BdZn(poHabV0D5|l0TVsSJn=4K zjAu|dwyU(scRsMDDR5qj!eRPHWB#Hy0LCL=D$_4KQ3Wwq38%Rj_yYS6$a2i$r30?6 z>0Z{V@$DEBEOpF&n8h%);zP%h9YuINcSS(ZR1t4$C%F#u8zMr&J!>0UoT6G^g#VcM z>VBy!V9%nBY0waV@nmGurGP`aLkIv7zSv!_9VgrhxCv6Mr$W)pnq-JwtGlR57efmR zVI%Kpni=L{w0b2|m4O(t$Tp2UwC-!`buzljo56jb@4abSx$o1q=NG{8z-(WZXTFnx z)_x&`;XWCkQ>)Kboc?M|4^K|6|CQ^mAJ^AB1YFy2!psE~@zScC1qXyrG|6|gFR#rZ z(s=0THHZjO+v0fABW-kL%K#MgEm+UUXh(mzLu8vmu1Fl;-57v z`}5wDZDl=_9>vF}dp*gu6EFK<`vka;*+-bvvO=mwl*Cgc-4RDz2)TGZ~x?y1H)`yS+$l!kXBW%+U?uD9D*AYrgkVFr3Ww6N#(0Z}j0&WU}g`bo}JdD$~dU z(e3jgg!{?|%Lj|EkD_=%h>a~!#=4E=5$)4Q(eOOQFM3+??4RK_uWLNH`_ld8MmJwd zGLgL)pHQ#+D_;4P0MTv6uu8yQ_&_Gl^N z4(GLz^r=UJQ22|4M|2!jRs#&ld=|lBGVyuq$*+0*%}j25+EjeRYFsgJKfE@EoJ#Hy zD~G!bzMH65EA=;tmFRovvmOsM=+>*=^iU;BdBWV;Q3)4fL$F#zfjh2a80&vNH_gGW z`tW-y(H=B{l~{wz)90X1fZam`Hc*ES# zM19EntmYn7kabOm2*QdKuYVxZN}W-Ck%s zzVetT(2a{zbl#@~(-A}e+Mj@EP- zXsaV{c=PT?JKxatPusvSe+D|Gpg1+bQ^dwv0IRUJhwB4^y?X-NuUU7x+|eT_ws}JH zp_Qo)eP7{jQ^AFQYQ+7uLocxyGEr8}GR!ExP3$D*ZIUG*V0BC(ZF&Gd=$AO$Zrm9T zVf2AWH>7Vq34ASfv#`jvk?5PLk2R`0j&p6Rc2>`LsxEAypX~8HJ*dk=PQ8-1UO%?k z${2WJ*MMq7c95b}?|R3g$F~52!x_&V_P|nb)6GLxU4_gKbUg4jRZ=4=om@SsZK3dMQS&z6haB{FR0@OoF1hFD9Q_cg0 zg23V(?=RoJa|MuR9Pzau2kQ1o1skvrbNJS#q5M%ro=Q(2-(xR@rFYZ~+`#X>JvgHw znFwltSv_fSEsCdwZDqHL)u%nPi11pVq&9{(Y&O(n2So1k2P~O;tC3AP*Y>P|SE){r z_a6SNc-cyE_ajM_97n)II_XrA`zws-D}2!hyDL)f&r#*t#2E~Mu|<`+$dCWJo7DIf$=Lz3&ZP9>x$!FU2gD!x zK3ueimHVCktoNA;WvhJl+Nqxv-?Hh9V$@Iw*(cNht%=Mdc3*;x zYaMi*!zM1j^rAVCuF%^^1D_iExUSj@J zk27*}bIH}w&~b%f1JGvcH8q_tK|U!!i$0KUD3*N4^F!f~jMVIF=i4>Lrs8Kf1EE+y zCuQYN_n#w53=eRq#@ol@MGd%x7U8w#f;BT_O4`_xkp0%EwydY-ht%&!`(7PK!K4nVOr5m>PRa9*z!#d9rw>cB`kK_H(F?N*m?#L%13@t5o_o%IsEV zU9l25N>L1Rr`s@;Lso2{eGKAjPuCrP?wf;0XTa=;8?&6)sgr@hcse^fj80s9Bl5^U^su)R|)$6-uU$#F=`;Vb`K+t*`{GVY%k~wo`@o za)Jvk)=l*EEGa1|=R6c`HP_>w%nx#uc>=`ud~(`rBD zol~Xw?>C^z6wlahX!+&&y00;65}_zmA@J-=YM{FjV|qguM3IMtxgCtQjg1CF%G7bpeyrEkr>z1 zxdNKVN2QO!8uq(6TbqeSbbO!#E_B{H>F!B2EeM5?Jy+xa?s8#+jW2fL`5PTb!6PLH zABNHcC8TxIc(J5-K8%;0{d%W1B=7CBjdR9A@!DnQIITB>VwBdAcLi9Qu4z8uc&~8P zR0%DuTUWH=!6`aYl^fJOT&P{J>&`HyfG|MFF6mCzs4oo~ASTMAnyGCU)+6cT%+cfT zpN;VA{K$)n%(CcKU1`Q3?OKKO>DL?cjmoWjI8sNB6j!vdX!wYjuC%u~h2A<{1F3jM zchOFKcTpuBw0x>2O}e3M&#uh%V$Zb;T@(u&dN=!IWq9CI|IL5ucH0}}Eex=+%EKNtl3R?$mDv^=J}X;qIe5b| z5}Xc*Qk~C9wFWeWWK)hL>F5ErlD*`wAukKMfo)ax|A-Vy*87n~{_Juj9(e>M)5*_! z2}l8?5{QOCkETX_E;GKEBqs`~)NBH;?#>=m05KEDt(O+~slAMi%&{Rcu0;!gJl+OZb7=+4zOR^ z=Pz_93hR9haRw(*-eMO;3um;vH15d`{`l+F!jx zLa)P+rUcSVQwR*{5RWov9Fs#RUH1RZGp2R9S`yAcgpdA&kn>Ltcoi|`qYIbf8kbpx zmiHIPofS&cxRknj3y!{5gZgxTVb6*vb%xmQ-vJs7Sbpk|snTn#e6DRSzev-?LZd>) zlM|}fsd3Uj5Ml z#Y*{;A{tWLMC&9PZlrz$m(XUDQ*m%E_$q`i6K$Ibxtxg=EDsL%IVt>H@~!8V<*`OJ z@eNu7tW2+^%uQC=U#dm+=j~gX5(-7VrPrii(#JX2x%PQhB57TXs zPy9o!(kt}{v61fy$6&N70QxgReQTods0k8@vgiGi2}Nn_>XC9J9zClPJ59IofQujQ zg-P35c$}$rKCd6`7_QXifzH;bGCIEZSY0_QF0q~UAkW*X$$-TM!L&~V$KQbp9`Ts* zLiYq$oA{r5YQ9YU{(yd<^}*3NFvJdO_A(Dd~{3^kh&@e-k=`7> zbja0l{Wi-7rm`~ddQ=T~CM|ubKthh9W|fYp%Ebh_FfTQtV?}1BqYiBq#K02PvwS7( zd$<&H=jl>w4YmOQ@{9Sa*fscGU1 zgy~ByWi_lK!3Oagr|xOGjA{CCJXi09H`?@vQiEu{`X+nvba}y(V(Fq<>4r!e9UpH- ziZ5zu;zIa&VAw0uz{tI?SI9o>R&o(hQYIFva-=i|a)jhlHi5;^Qp2toyWDpT(C*>` zJK8b!3-7^qC)S=xYvS&HD+sj>Y-9Px+DbR@Yr^9Bky#8MPn$QUic-w&jz%kWGwKSO zRh%@oa-8jU_aQz=jg`@QorDe_jrE4BTuMv{vMM;ALa)83_2|?A-SS0#?9}>#f)_G@ z&*22`Lnt?nCNKZPp85ULj22wX5HIAohDP0XqUdsFN1#K9<`sEd4#NEInC2kv98GN` zH^j#1#R1oZ!q0%{?c@_T(-Zdt_OTeE&6FggI2>tx!kfTiP#wS~pB(^!n!pVAP zikCx>>`3!_A>*EB?L9>vpmGa4$)(r6zgn>uO&4@A?Jc-o3 zG|L5`jTFz<2p$4SZ(`6Rvb3gD@v_=luUU67_*R~)nKYxF3_9k3-*ywNWr$tq)P|34 z9{`tRuA)c9D2Z&&OqK@g5BC=A&N^-&H2~$8+N7J&m!`BbB3)k=Rek`r+YBs=KsJag zO{r`^)8c!cz;_N=-kS1C#cIQ^c@G{b*LJiV4y$}K-9W1ZBd+?W9H)?tC`h zkmM-nzl-Z%rvt8J(nhrr(rcVqM{Ae@FA6?JkHL@y(zH0UMUH|5t)(%(bGnp+61x^n z*^5BgX9R}_3o;6OHcr;k7XnnQ`?Fy*XD(h+BPZ;#ki-l`Y34K2(S{$R3KhnO)H88I zAktICT%7*~b%cn)p^TT18T?*WCCyh`rZwSPLZQ&o3!2iaX%4=FDaWIbq0Fl>B2NT& zIuSJiPqzx>-n{%RY?twqRlcIc_FzxX8TI#kGi~aTvdv~2g2#2u{HIP$TZ^586G!@A zvoAe?Lq{98091=K>oZbS+S(Tydq`+9-CUgRP6XBQVXWyJzk!Y$>YkIDrUYYVZN8)Ih_wT#kvvMp_?HhF=p27s{j>;r?QT2a*t2p!Z~ zDpFmF+!ag7R#ciMS+IHlGkFC=j9%wx<@STey3>A-z z%&MH#tMoohcu&GX{10Az~QQ){;UB?trQU?<^V9yMkOI zDDJGEt|Qk-8Cu3ndq#Qmj13XSs5Oa9yS`t#!d_jr#o~N+7^!y~NwViO@Onjtgcn9z=|8_D3uR+vu{gi9J z6{Y36#hI1e+$n^hjS7^y+1zzf!n58GuhN`wuY>)=@f4@)7jV``6$S_$gx=OmN5pnD6|YpTavZ}m9xG{If@_oqM@UN5E(u5Q_T0?b=4~3G8O|YJc8>+! z7C*sKE)O$hy4wE|~`z6OCW)wULu=3?~D8NH3lF$vPH*awyAt<~$d$#;co$_fHr zK+|FoqvgepXV)oWweS1MG7t;4G`ZE5jRSTqMLbNwaz$mN5MfM zr^HPi3?}Qs8wzAHQ-B&MzVRQD63ud%EOFG~`M_gn-g%CPV_05SF8O-VMv+~@M)JCm zC#s%&{TV&r>%~$sy*_`9mFcR!&EXSsnkw;NQ0kPpDEK;SDmjfb5&2jmT2t#@)^}Mc z7b9Map(}YnGSqxytXMxkAseQjqa1j#zSl3Y^MSgC&2RJqsnI!drSLt_B)x0Ggx!~z zhva;hHVb~#>idWEf6@QfpG+-0SAy^v0WFIRhf)8@Iz=LK4%m;Lm}YtO>i8H^Np3!K zRc~2)K=i@6t}fB(M$z~0=~AA-k2HILAg_G)Mtjw2=>XWeZWfs(t0hHl)t5|(_ZTg& zBf2*5St}EQ2J1!RJ&}@G{W79n?XRU-=v;i`9~t^(DF3pSnk|0c6>!!)$1YgU@sd8u zN4G@Bj~81h26TEuioeA0V>uZooA1!v(^WhKIUz(>i4h9R^ zjX&|X+oB%$@%XAMmY{Hu4np>4Nq?=&?&yr5@$W=W}A|sd(hpD4?`i^)<<*{CK zwAEAKHPU~65#-j3OSRRW@#eKJh(?F+n7%0RIr5U&?_ovV){u#H_NBW2_p<*v*k~0d z2Ab2FC~wa`>e{~TR@hrhMFV=W+uoiXC!EpVaR;>wUz%j`PnEvSHn?tp8s$)v%n4?e zwNvg2?kUwX+acxL)X4avO^r3RJvCAGC2gZ0P@e`+}fV9bpg z(1r>q>lW>S^L+HiEN@e);!1D99Q?>?LK}BlOIh26UGO}CilB58OsoS5Now@Xd|MsP z$96XL5$11d&oN|fn_A`-13R@EqhZcL^m}pTD4zwH+YUDe3Qo24euc#Uu!s7~-j+V>>}vC{Cx^7BvoneX>26I z?=+8f&Lm%H1vkHHVLLqA7F(IH@bzp<2hZ;f-qw<$8dK4dy1CMyM(Yrw zxAT}FvNeRP7U&}mN~oUbwDjDrFNjm>90Cn^DmjKpuMR3G42dh&YH@0g*6-WYZ6ay6 zYGRx1;m@iwE+=gy9M@BuTP{%^Y{lD^Lv-5-89jPQWmYfQQ707=uG}6tM{OUYNieND zz9^oiLtD?qt^&~F$E~fP1oP@f-}hmFeHe`d*l80X)A*gI{^yz76fjL>-E#*OIVAkw zYGv)_V2jK`hI^kg7B!0K3~W8FDYr`X{bf_%_a*1H;XJlmU@mL7&bE^ZCK87lgDlj+ zTO^GqBDIs*ieaGhnT6yaOYS@7 zI7@I=?~G?eX}kE|2Masyvt{<%Tc26eVa7Q31nkd}5rGYJ&joJJCwzzFBcevR{1xVt{H+cVw z4Djh`sb5HV%9W2t>Z35}orS)wfzx;pRqMOaYq}kr^+FdkV zJ1M<{Q89!y$E^GL^WhQjmv~F?16UMTgyTz3Z9>&C+GDHly*)BK2{Vr{Ck|WgO<^?q z@eaj}P@1zrA27R090vr2fn;&b!VeoFPI?_vUlY~l$5PkTB^ID_Y&qRI8(>BPSpM1I?%}9&Cr=TG&TTttIVikbx>nPLRi_omOjqV>nU96_M$F zI;!zK#_9Dbsr9sp9Mp2gnr7!cqqg}T-Xf3SY$BJ#PqP(`4p>DtRI10)xKIPZ`9g%Q z+rFVpg^W@y*U{?C^o*BX6?zB7X)mx5IEl&OEQ6+$oqj@dt=)`2@g3c8Ug(IJD}Rjh zaEjS#8L;xAwD`Y@?=pTBzA!c2veC}H`|w-UYzN?AO}=v8*?3AH%flOrElXmEn>GCz z)rodkR;X%Lru4>md97}-K5AXaE@#bkh&G+Gl!ItQkOCSxLrxE;tOuN9EsZA3xY&9< zWaTQ=>DxZFmMXx*v}9$#F-xqJXoKeOT7_s<@`JTu>Hd&8;}x^locg6zyuJ&lyOHK* z?>!RDD&NJe-3@QpZVaFLMv6VZEDSmg?{!oC$65PrAzdS{J zz*Af?(i&F7Bf5@Wo0OV+LNP7}oD_I`p@Ial^C|^W&hYr*lP3k|_8azQsZ5|!j{aoe$ z649UKCZrrO7ot)$8xk$4RVASMPU_$UkiIz8~P81Lq+XF^Y%lIX2uQ z4e`6nD=dXvgmV931^*Imf0o-2PSw$OIIdK~&#uk$Fla`z($_@AF9`zBa$7UKKzR|p z7l10;oIc8*L=PFKqvxqe8n}(%cdk>=7I$I(gfoBaNv=|6*^40p4ut;c>pMpb!@LJS zc!ECRhZ;(HNB}yeHo;+oxNJB2lG6sg7~X#$i4DbW`lr2y6(Tx`1eXZMTlv?i>^?6} z<2m^DH>y1G{{wgZtCjrYA4GGS^y)Ue=2gr%aw_vS7=H(Z560Wjtk?g&GA2LSuv@#A zhC27YFRkaTZY)UMUKnXkce=Pv&apfzl+*VA`vN(H_vs;F9rLlgsk$ z@tz>IyZ^m-0JE7Vc!xGpr9vt^W;_FvQFw3m+^zNc^}KHc+r9sNe)kh`ncTZrR+arI8J)~o+Z^XCMF2|6i%CdFs!7{nquH#*2COE?K}j z)jCN3cb&501h9vXzfj1%n)5clMoGMr{QSZHF7QRlbvEn6ilI&tF)=v{g)c_i!T{KI zgw*8!-)A!wueG(xlighC(fP6HRrQnTrqol_$XFEr?EWv-xDd+z@c&sx*zJ!YVGL|# zCQXu7Vp5NL>tljEet}2{2@&!S{>vZ$|DyE11}ZRaY<9hHn(GZMk*BQX?oUR96NXDi z@)kq+h>c1vWxWc63sT(pb8i2hrL`d*16xPyW8SQI-Lmq-$w%8#x#oHw?~vW97JkjL z^Nal3Fv%uwb&8?LqfnhGU_}D`jz_ zRl%|G*z29d@_`bNrtmGJWLEtBnlIPg6{cxt(YodUR9)`9Ch%cJgxE8FCxFgdv zD(&1>z`w!4$=M2PZx`I-XZvFWWMhc{#sTZq%fc&P$pb;MBOQLH{* zjp)JpJ1v7hXBOs1v%G;QC(8i(!K{j~^BDz(OY7@1AFsHXCsT6RW)u|_k#iMg_5VXy z`%*t7HI1OU&pFR^ZiLG|Gk0F#*=xMVWK^yti#73lix~htFH8lVh5u&sKDM7EE5X6< zNG8ottM1YcPxqkSA*A$N3~UY#Eypl3p4o!3Q^9;yAFhty+!oDq8A`o=>Ryq!F>VFV zRRl$!O0UIml^}0%P>rK=g?~R*L5XKeu@Rrzal_+>i0r|Sfg)HN&y;NZ6HIMw|KY#E#^~Pjl6r>mT*E^BWH5Ir6a;lXhnaT zjr)%V8hmkCD0oD26=rkw4?|^2UnZlH(mbq;UjYKK&izMxVv*$sHW7FCmHg6wVMuIi zR76dO-5cXjJ1dmaF~-;(-|a8c) z8Q*7Ov9!Z`eS@mk>{YGL&P`*n_om}>3H=5ZDptMKYrIn+^ZNNqv=@cnlF-C52I*p$ z?og=P2)pkmm}#tG3)m^I�-*;dtHK?faVyXj~Vxf5L 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 F{|8F#v0(rJ literal 97352 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
>p~~mnooof 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 MYF@}Zcf;?00rHm@wEzGB diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js index f56fdf6..80d4a62 100644 --- a/writeSummaryToCSV.js +++ b/writeSummaryToCSV.js @@ -21,12 +21,12 @@ const writeSummaryToCSV = (courseId, data) => { 'topic_author_id', 'topic_author_name', 'topic_posted_at', - 'number_of_posts', - 'average_posts_per_author', - 'median_posts_word_count', - 'average_days_to_post_from_posted_at', - 'first_reply_timestamp', - 'average_days_to_post_from_first_response' + 'number_of_responses', + 'average_responses_per_author', + 'median_responses_word_count', + 'average_days_to_respond_from_posted_at', + 'first_response_timestamp', + 'average_days_to_respond_from_first_response' ] // Write the headers to the CSV file @@ -41,11 +41,11 @@ const writeSummaryToCSV = (courseId, data) => { topic_author_id: discussion.topicAuthorId, topic_author_name: escapeComment(discussion.topicAuthorName), topic_posted_at: convertToPacificTime(toDateTime(discussion.topicPostedAt)), - number_of_posts: formatNumberOutput(summary.numberOfPosts), - average_posts_per_author: formatNumberOutput(summary.averagePostsPerAuthor), + number_of_responses: formatNumberOutput(summary.numberOfPosts), + average_responses_per_author: formatNumberOutput(summary.averagePostsPerAuthor), median_word_count: formatNumberOutput(summary.medianWordCount), average_time_to_post_from_reference_days: formatNumberOutput(summary.averageTimeDiffFromReference), - first_reply_timestamp: convertToPacificTime(summary.firstReplyTimestamp), + first_response_timestamp: convertToPacificTime(summary.firstReplyTimestamp), average_time_to_post_from_first_days: formatNumberOutput(summary.averageTimeDiffFromFirst) } diff --git a/writeToCSV.js b/writeToCSV.js index 4401052..d7a9a4b 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -15,15 +15,13 @@ const writeToCSV = (courseId, data) => { 'topic_author_name', 'topic_created_at', 'topic_posted_at', - 'topic_created_at', - 'topic_posted_at', - 'post_author_id', - 'post_author_name', - 'post_id', - 'post_parent_id', - 'post_message', - 'post_likes', - 'post_timestamp' + 'response_author_id', + 'response_author_name', + 'response_id', + 'response_parent_id', + 'response_message', + 'response_likes', + 'response_timestamp' ] // Write the headers to the CSV file @@ -44,13 +42,13 @@ const writeToCSV = (courseId, data) => { discussion.replies.flat().forEach(post => { const postDetails = { ...topicDetails, - post_author_id: post.postAuthorId, - post_author_name: escapeComment(post.postAuthorName), - post_id: post.postId, - post_parent_id: post.postParentId, - post_message: stripHTML(escapeComment(post.postMessage)), - post_likes: post.postLikes, - post_timestamp: convertToPacificTime(toDateTime(post.postTimestamp)) + response_author_id: post.postAuthorId, + response_author_name: escapeComment(post.postAuthorName), + response_id: post.postId, + response_parent_id: post.postParentId, + response_message: stripHTML(escapeComment(post.postMessage)), + response_likes: post.postLikes, + response_timestamp: convertToPacificTime(toDateTime(post.postTimestamp)) } appendRow(csvPath, Object.values(postDetails)) }) From 970ba6a941034d2c8f4b88f1a7048480b3191fa4 Mon Sep 17 00:00:00 2001 From: alisonmyers Date: Mon, 23 Sep 2024 12:41:31 -0700 Subject: [PATCH 52/54] grammar --- README.md | 2 +- README.pdf | Bin 0 -> 263523 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 README.pdf diff --git a/README.md b/README.md index bf68c58..8fe5163 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ### Data > `{course_id}-discussion.csv` -This project pulls data via the Canvas API the discussions for the specified Canvas course(s) and exports the results as CSV. The columns exported are: +This project pulls discussion data via the Canvas API for the specified Canvas course(s) and exports the results as CSV. The columns exported are: * 'topic_id', * 'topic_title', * 'topic_message', diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..75db597f222b1f14cf8ad586118527049d0f0318 GIT binary patch literal 263523 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

*Cs{MU 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 z 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

mY6B6d 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 Date: Mon, 23 Sep 2024 12:41:46 -0700 Subject: [PATCH 53/54] rm pdf --- README.pdf | Bin 263523 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 README.pdf diff --git a/README.pdf b/README.pdf deleted file mode 100644 index 75db597f222b1f14cf8ad586118527049d0f0318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263523 zcmd?Q1yo#3*Ct8~5=bC~012Mp?(Xgq+zHw^1RB>s2*KUm-JM2~;O_3hfFFS){w_bXA>Qdq4ZBz3Ws+6-2~n8R=M%Nym1!R*)Hq7>H~P%#nF` z=!NZ!^}#lFL=?iNb~aXK4px-N^a^%1Mh=F?z)d9!GktoXFOd}o1MtJI#%4CwBKlxs zA_@^MCI%)J22LhsMotz6W@c&z26EsJXeVo9^xtp7$A@feZFDCB^WUNv>Ju>{(+kNG z(aYJ`S?OE;-H7!+G@@fQI{qJ_lF1E%*^a}c5u(6#rF!kSsUw46r z$m)ab%$$j|IPb({AfjbtC1PQs6J|Njm)e;M1V%c9IOq& zfRgUY!VE-ObnMK`M1Oq%ZG{<$wC+Y@0LmgZR{CbvcXdXf_Gi~WA1_D52q=MG)ENwD zi%1J>=U_~9_i;Cfjg6g={T~DU>imZYfA$r&v9z&Mveh>PrYBSE{^!mA54FMhpS7VbZ(we02nI~+U;zFF5-|Xk$n=WF_BIZ7 zhQ{`H_60n}P{|lfr1i^5=#`C~!9?_uR{9`gp+CNb|M->!=KKe^es$y^y3@bnFN4qv z3E2Q3V__mwzl~v;APCL0keq_0Xh=`*alb-{^Bh~z%}j= z`xh6oGtn`!0bKYSzW-oG!M|Z3_=^{R0YODk5}6+OAfhk@gKh1(=;`gj`qoDJc1Gs* zbcQxo^pyXkDyIL!RsYkXGBPmGv9kcY%|yh;$x6reOI9XEMk00wj=xy^e^gdWu&ILq zor8fPouNKG$id9W*q$D23OJaNE3KI|;3p1-z?w??>zDsDlYj7xn3*N8=n&D1Spq&I zVr*z*1bEIL7~x=I;`kdS&dGZ^8ew>xp`K@D-J6fd@ES?qmwW5fZdx%`jeX^zZ?b>S zxbPM4mQb4Nt%y`K(_7}O-gR@Qwgoej?Y9MCFAEGu$=1E-n6ECA0l<(zyCxv*7$(czod?WI%PdK>@k#s2j{|9aVN zZ;hW3os?Nf%r&W!$<-G0p6A6;p3_0=v~=UuF?K%1nY@lnypZy&PIbf8F$}Ua$b1Z% zM88o#$5=jqL7j3oUbiG#oe%ZN-=6KmCtlDi zQR!ltF_mo+`MIN6(yU98K*=g<%OJISTZZMQ7m!)_^b+mxfPay4ojf|E4%^Rn0#&3y z|BxUsoMYfqe}`+FyljO|f;mP071dae&*`vNx{Pp-A3oOS+~j6wG~q8vLNaV3ZV5j! zG1qMx!t;beG0hxI_i&D-hAw^xdQ9-@jCl@v5F7K3veT?fCCq6CQ!R|Vjm^YDLnc@& z71A`>f0XTL%JCO2JjMBuH5a82$FDbub3r6TEFXj)Qb>rY6WB{Zn>J_2k;8gnd}Ey}7_M zxixGAx{E^)mJlBVzi)oR&^|+zVnK6_$cAIcoB!Y$>U2IWa?lZi8J&HVt@)de&R>#p zNEn-0zGk;IeqU4P8aOe)O&*UaJGhCh$@dj4xwwZTNFLm9c>AOMMLSLo4}+;LC`Zix z5zI94=mAzKrNXEoxi*#Y;_Z#s&GiBQEiA5YjIgh(?AGR9E#ab|&GR znSqk;-#???IJU0H|JGH`F;Y-bu7(V@3AFBfEtm5{moiJBM;qK!(iwg##rZQs@pGIV zWVhTt`Rb|lL;4zSx}EWdd?@)?)F;(yRBkj?YMAUTyRnsDLl7Dl)>nq}^^~yP(i*2B z;~k4RbfO?fsY(XBw(_Q zdL+)i8_Z8;Ata^;k;~8Gg%aT8nYO zN57z*A5(pEW$%KJUQIkuv1Ln`Tx8nY_uv1BSlr9CtWlCtBer*Hmj1Tx>v{fm8&(zO zmcDQ+TED+`zVUlP+Fgp;mq^Qp zkEpA#pT^S^JQbXO;q1C!{2+2M(&?Tm9pQ%&-<3z&%qvoeH#cS$*5TOEeL>Na=3dML z-wN92{U1;iYTf%7v{sy`qJQkbUptYwGkDm7-ZZL)&HkkVYtn1fp)l7t0#w4r3zF?h z->7CU593CtW4AGb9xo+;0E8s=@gCK9r-W6qDqf?D0=3Au%@o1G5fAj z7Z8vT$u_W77HtO4)F?smpFVz0`{r2K7NTrg=O%BETO%F7OOj7oD3bPx`%FgHl$wX! zRk6&-aS92yZ}#My{=ofuIqC7spOKEO+swJ00;EIgv81F(3UkFDs{`4wzZKClaT(@# z;=2+AHlL7%IZS_PSUfLGsu9xFlMFNie}2TXE2()$XSdSz|LNRJ*|VB%3yw=`sKv83}_gn`0HX_D5e zd*j^)yugQOZ7k#>GCD_>)I;V=q}*>_LHNH}xBJ{1KX65b5Wk`k*w?demQgq-o$9~D zI`6%ISW2*v`u%#?(tV3-tn(~oOYJqLi>GuIVt2-QB`o2_j#PmlHieH^)srH>#UD+>8H|$*%KA>W=tuf_x(@n zwu=W&QNWI%ty2niPE74DK1<3C_@dNZHQ1A*_5Cj+jZ+5-^*!xicEN7=^KpaAKJqMT zK?+hZ1^<=#v&zuglOHZejGwZj)HP91OKO6s(5f4kP8_~(48Yxo8~FqgZk`Zi-Jdc@ z^_w+~!t%e@h+i@(Sw2~lgZXpX(g9hhy#;QT930B{Q$gNaE(f)rEVQH)nr$V_Wyu$J z8JstG`1tizK+wS>zV;tp_XhZA`Qp>!h%e7yo59&VX;-IO`Abgn*GCZ`qdK#&C4;#x z_Y05eCz217=0wL9YS)6>f9OC0sa}?p48*CcBDza5+GT~71`q^Zp>}dSHhRj_z2hd8 z)~4^dl|qho(1LUD$&)DPaIX{P_ zE?!LW!ne-T4{=^vs_3EYxz9a>Ldg5`Tmh#aE@|K7E`9e;9R~SW=F&#GG%G3}b<-Pv z@5ubgh7*MxYk@9|?0p(~<;U#kzR>)Vw}TaeZFs;nNLg7s^z&si^5faCE`D+3)p_n` zVr&P(0o~K!dmYJ#CY-o=?#4Mo(WcQM*x9d>Sp{J5wE}U?! ziDv{^`dDR*V^lxr1(o6V8Pm-O-;SC&D1#~(|PBGgRTP@$2(MAGOONuEn`1I)fPV^Q%~1#W4n0Se90Hw}ID8 z)GCA`wk_~#S`W=F32KUPs$Iq%&C0<8-}A3WYpfoUg=wk?v%<49k+E}M(O@vep&ZDR z&Z%m%HDG^Ov5WBUxt_qLW3PHLPII3Y%7$Hvo1AY6c;}2V1o~ zK!Kw(_vtEalC~&v1#yY;CwQHc*K5*qUT1;68ithdmTA$^*+yI^sa?9U(zK1@^aA8m z9uI4a7OT96MH<G{aG`eS7pBTlUQHoQnL(~W7@|y!Z2BhMwU>ipYrDIbvG+eHQqpj~n`VWK(~qP%zEE z#GK_J)u2`1@bfab<;ZhWe3plW0>bG}SRQI3J^M&C%+RQkIWl4TMUNrI_QkU)G3}7g z7EUk4g}2$1w5NoH4IU*S`x#n}GAveZsboLr9+eV}=Qicw>bT*})PI$}@|rvvN#nfD zpR1HJ5s6`Hu;80^w$Zh5yagqBtzO2(ktF?Am?uQO$1A z#82AU8-4`7^D@NUI@TvS34JYe%*iTB<>}_->4-a;g4k@Ie1s?7vwt)(66s~Zv$a{y$G=B4c>TFv!WsPk&I{$uZNWt>VG*0T4h0lY+&)&Z563>-f#RNni5Ox0$rkxh! zdGnZL5nbJm4x>1dM@HP*5!1qNP{0h|z`|tZIk7BPyM)z<26@1sz)m`|f|ma)v-_zZ z$?y%bk)0>aF!SYDc~-Hr(UqgY{_H|hVheAKv#q0Mq4y$vFsP?R;z{|+nyd~J{xsY< z&piAV{|B?6kvD6qgPqr)ZP?Ia!1N{kr|E%-JjELOFT1C`^|}nZ_jWB92`H?l+qkH| z6G-g5Z>kzaa+14P7T9^uqwuKnf$TX@1pZ+Xg|Q$)2d9YS^)T`kSRe8?3ErpL#<_>{ z>|=TuTJ3w14}R&<_2TIeXv5Jr$+x-0oDk$%A(!;Wg!5)wz7I-PeOGC(9iG3UAH$|V zt48hRCVfX>YLWc0LgOUawyC;R)TP=uNJJ$Bdj3f13F*63_V42|0p&p+le>(}(!b>0PRcUZaNz?A3xB&mtxnUw;eq6YTC`!Y<0#s7?&5>3J-D zf6y)pJ(%V7w__Qxa2MfptNSIe&v2AnbS4{h*6-2%5>bK+Cgy#J-7lNUePka}V>8!w zCtitnv%W96aV5j4o(e_wC}pp7%@Smj9_82bN=W;RLM2mN8@*FtxN6m zb}jCw*We6gm|K8I7Y&p7wqtGi1PHlC<*EqdXi3#=8P|JldY$p za+K?1X7$=V%qpZFNw;wAAp#QeJwdxs0+OjJBuNvwkF~SD${;xyw#*x&jcW5xlnMRG zmDbE94!mvx#qVM1w!s7Ox*O4wZyd8@0vXEY9{lW^t3cYN@}7BXJ84BYPkrvLw%_Wh zjf8J%i%)3a432I3Rg%FVqT6*!&Lh6n5K!ELhGo0nKA0~mc&4*(0Y03OFR}~ zhdeujVY0>4KzwC!^VM~3(x@tlwy;_uhitYU4U(D>uWU&LadVVyxsoEbtFM9!l&Q(a zqLLq!={frvg$wgV>}qic%<3Y0G&<=MX#w^qlR$hINQEi5FVNV+&3+k7{>r*-c>#a3 z4)4A>Q@#z~k7HRV@?dR)VfN!bedGOCX83*j_BYI8*4)MY_{6fskHaZs{8>lA)5*OK z8Ep8ImZdxyJ;@gB0K#>V^3R^_btBp4gJI23;ta+RhPHaaU5e8p4pK#hP*K9Go=I{CplNeOkjNrc2h4;xzioWr|UZkNnGKcSyug zfYA^PQ)1^8@j*5tw3JD#W$;5)*^}#hobQs0L~p1ZLc-%d3%nZW)GSYS779Nw4oqTB zD1I#22F^B7%TTTD?t9AqSQUpjt*X3tqO;pVKe(yimbk<)xGA!;dovn}M@_c5R`sri z5z5rI*EGAP0jmE6!p{%@gc@6@N@AoT=!8ULHVG>xc!n6Ck78wMX+t7FulHr+xhK1q zQdVwiG_&H4;f6_=Vu1oP6jk3PcFwOx>P9jt(4yX!V9*9~<`r^wi$!3FMe;}oD(_mZ zy~17P!Zl2JHmEl&lAFo0Zg_A-aq^iV`#9k%nd9i!V3dctxMh#m4CtTq*V}L@Ru(;{ zRu17TsegDb&B}TGQ)ME3ui+eBDbaE&JgCp5N8#Dnv5)Y`mt}=$a`A}Cql2t|ga=j_ z1}XOj^%&rNPi-e2D^a@GMY|3tj{^!!!cc{fwf3Ayd0M1#4V6ZhqAZyFE5 z(y!=#zL!&OiOZ}w>QK7sBXB+W*F!`f`*9XYC zYT9%^ht~AD?oii&E+~aT2Cc$Q7ii;~qbzDI zuUC&0rlDx^k>-= z69nMvXhCz7YfY25h{=zh_$0?WL_SOsI|8k-TgK@n_a_`&IlTmNGK^gt%s*8JHww>6 zERfZ#KOlKD#njr*A*S>h7E2Zv3pXYMV#fyG>#Vsm&-b^CyZl!h9y`8X@bQI2a6Cw* zEa?OON870l=ZLpN^F4UHs~wO1!n%F;p0jBV!}-8cC@w^eH4 zBfq%vmR^I&Deb@`zN^I4-Xu)gqO)0h*SsY)?)tow8vUV|pJp%U+v@a3nRQb+SDtOC zWwhhiu=JoMM`96rI6YpX;SyXuvYzzEyb-kl^ZOo=39iGpo*)wL7$zsoe16r;^TL7I zkk*=H#DDtYFl2krh`x+(9L+NM@ctroS{3mL0`a`t^uqmcIhI0%pDel1kQUdS7aOoD%aT) zQHP0h{*Jl{Z5f$K)ozR~k~R;}EIuv~bp4p!oEFF#@;CsotRnUuFq6S7DoCKf)m@^@a*iitfxO`?wt7K zjLv;a%)_B6v3S$H?KvS|k(D+fmdgCVX;A(guX%>ZjNKFb5Sk4M)-qx-AAAni?ZFty ziXL4ED*G1I2I@rk5ZA~}^EJsY?qK05k{`QI#)F>9R3iIch|E-28mVc5%g7Q)9Xt_o zz(0Pmu%4RSN!!Ws%sSz^=z-CU&BPD96{i_SWOnL=FxbOf@8ffVPxUvBwvr%6-pUdD z;=1V%?A~#0yse|XuZyZNmR>>euLdj&Mx8Mu`uMVEw`4>ZCun^U=j! zjQ+d^ZV_flIwQWzvh0H$Rp=p^Nalnivyb+};{!7-e>i2?rBz=85sZo^9@SN|xYK88 z-a8}W;{L7IEVI~K9GjO^cBg^jCi))yO_(SC2Jl$axgaQp^~a=53K==g9o6B$3D=^m zrs!f1C7dN?R00GW-;6wmSP=w)nA%VMwT(#ll~pNyF<2c)59q76R4>Qgij4SwsXG<@ zDQd7h$Z;c^vqnk#Hm zr}lLF(3+l?Gi^+oTxg2=Yvc zWc}iK%d{i#Vp-7EvW+?Ka5q>O1M)iVI{MNc>Om-0O0H=m|JsA_lDV`~&XDQ4^vZ>(ac^sQwG*os9~Kt1<(M`2 zm70FS@|P|Wi;p$?z>2WLHm1cUkh|iCX-P(dH#U*Xm{N2v{$=J%AgF5cY+~6ucGSgy zlbspn6u-m7q6<_pT*=gB#iH9*A*_%Oa->Brr|iwtNwgThs6hOlBjNC!k5)zPY%(_o zZ2+IrY|HA|r=5H@qIpzf8;rn~+yL>3;g{>rMvZbyN3!$YJm)E|zHNqLo%f5`%DsCw zp+vr1V#7iYh@JykwW*4_P`p?&@v)Zku4PCq$+NMDyEQR`Rzb7+L@<+fn9CGp9LuUX z&J?8@b@skWI_>bo+507{_CT@ZtcatIdx_l)$g5G6qhA7fH5HIos{ncRD3Dh>0(mvf z;}=%gi)=&qjFcjj#mXWLzP0+#Ma~IEPD}Wxj;!3bSnAGEU#>`#lX{q?WA45gKrH-v zmi?&Zfh5W>*4Yp>1wN=OJ$b&eE2J(96Ql<^Jpv6rwuBELm@!?^je{ zxzo_Rc}Y5mzGz2)!4$JZ=b{?f6R>Rktd;mO!{uMLH>=%)LqTdEEQV zh?wac$u#l0jLqr%aba7Mqt=-lCL~cf-1k{Xv5*revc?kTX)wLnf@*}wqzof_N?3c^ zCzFjbwdsxQEEK}kvw76WjNySry)?nSlgb!bGmSatykFcAw97U_^;d#dqC^97ga@qn zkYdz%7|_XH967-5^P|{wwe0d}9j!jv-4R;`-h$sgV5-Q?{;wx=nE%UZn*VyH>DO5$ zWO_9-BjBJABQpbVnnuFd3}gzvJKc77%IsepBKz}r5A)qg6Gh-`h#A;k!PrjN#>&>l z+SnRQ!~q-{`R|@>U}yQqktFBj-326NWv83N+r6Zv4NIt{+$qTnC<^2h6}8L%0X9}# zl=Ld=9r5Heq%-tU$TQqP%!-fA25pNWiPIgWL{wB*&jr5*N*oaVyj^u)9r(obRC~Xl z=wPbBpLxE){vhQDQq^RCFc0sb?`_UQxV!LobsWmk-OyO>DillqKdkZkw%>j?Ci};Q zl+a7%FWtMSf`mK5EMerH`vB05_XDCdeHLEdPwt37ZJDSW^h$P!=uO%^pvLhS`dVy^ zS)v;RR1i>o+&_;TKYamx4OF~+{||QidJq38SGn_2rXPPlh-yw!SH;B&rDa*aF7rM; zV&76H{Thk9Y-;-Y8_+!U`+-T;HRj-4P^WbA1s{7VYT$>k|g546=BN~bVgh0X4oY3qhHoh{MD)Kpd^AOxQ`*vNXPBjkjEJJ9qJeqle7K%* z?gGX{1UYo(0%BQy;vN*Ef*KdyT!hM&2?|#ZKSKu0Z`a=Ie#+azv^IE>{8qcwUKXp| zEuU*cgip&W?pbZBO+{tzN@V4Knv8nX5cklYgp4drVMnZ+RmWRsCsmuf95ZE6$);9uv0Z)kAJhK@Qd^dejjDsAn2y>i)nPneI+(j| zy`@Uo$2LO)0#v87c#Z)`(@U_%y1kJy*mqI~r)K{JrUyjkKMC~<#$QKXCJkW?&d?px zSQ8_IR})S=)lljAx0Mb{pXE*U=un5zoiWDTbdK%N7K3hcJh%s~r>e*+-^?Uijzk~iNo)7BMGuFmns8im&wywZK5`Ng zxl}$kXz&bFyVqz3jzwLBM@RVweD3sg3nk*>2-RK)YL zv(>$@>UuXB3C84+9wy2^+L_}?Q?r@=vCXH^H&MHAfyeow_rgQ99vp9cTFN#34UpdlYO`2F4~R3o$db;|HT02B0qdKn;aA&$g~L&kls|*N*L;pTc=Cw=;%{xF&)>0 zs#?=)Za_{T3&49Dx2KxxuwV!M1YD-YF_wr`kBpJELIhqsh{kVgc3bOR5>W7DBTcpi+v&hk-8=RU@LvK0 zWcnoBqK|*t9%lH!X;Auv$FF2TY$BcWQbQ7PdC%=OFJ_~PRQQm@AElx3W5?llBs9UNS89ndOXhXu0YHl7etu@9!A;P99?^&bpZ-6Bje7EM}J zdZzU;q!|OhpizwocY`<{|FIa@vP^DPiR?g$hv*hDUwPK%J7Ph@U#!D&x`SpoXK>}q zmeA{USfTPrK}r~OVu)sNclw*f#UMA5I%1iwcBgn$^`y-z8XB~BVa2Ook)%cFs37=kdW45xAyPxUJ#ziFDwD~PC=}pqCxNnZ& z&m3dj$|}weK{=;$;WR#Fx;Dd&eeiT?QYzD!p;g{yI_;+8Rq$3<$t6B_!G5D1Ey+(s z+e?D$HMIb6gT-K`aV2fTo4MKMGw*)AZOG|bg15yR_Tr_L%HBHD_%2)Skn%RCu=S-sxHSqM>ofO;vxsMUTOf-;1-@cJMZ1y-7OkXqgk`p z6iak1hG&QJS+w?+c9L|S$IJD^Vy3oykb+2Kp+E>XU{~{Y8ehBQ$Zag>9_i7V2^P8E zWIMLW@31Q=4TzPD>!hT#TFvCd)n>zc<}~^8_#s9b(fxI+J##l7H@*5d?bn!l3I8$+ zX)`!pb=a@gKGY!&HAp@*Ow!%C}(Gvl&oBN$e8FaWf5G9NrnjQAT3qSmZ(1QXC|cP^_T6){QSOt|>i;%Y~bjwZwd{ zlX;VNa)ZN?FE0t1YkA(Ua@Mt_qPKm-SqS`La4Ny+zr54LMV;-?y)~_mJ;QP*eypkIPCc1?!%uVW&F9ociQpwy|g=X zeV3zsM>MfhCU4T}&TS$g)fPSpP|k{B_eERRlq)JTOU|^3YUocpjiH7^0Tg)CMSCG& zL5w$DC@vRHrPAIOOGPzD$F7$f_7_7anm$gGJ~`L^4JY_KQ17J?cWKRfuzD8TQt(-F z!F40d|9Y*8_CK;i;K1fYmzt!f=Gb7Rdd3p1u`wS#|BtBXSTOtkJ}}Y9(a62X>J2y^ zo`cI?&xB&H{+YFrk#W9KCCUJ(KxbPm;cko@qMjs7xu|gU$dBIw` zR)Xg3P1x1>rQa7=<&y?lNStAqwEub*X0vmD(?1Y7JL|cC z=criH)CjZ)@Gz586X^P+xdCQ7TV2`BglYWH3DiQ?oQ#c0!9>T%*w)HrW|!+LthBEL zps2P~YJBD{$Bua%Cp!n;;a7H8?~wlHffUwX7u>t)6D3kH&pK$|2`siZdDc-Y`vlNK zsu~=ue$Yyl>q4F$YtfacuW`|oR;!zF%+QN-^E4C!E&7E?7_F)*r?%pMTr(`78u-4o zwpdO8Y&r;>YCSdWzt`nMV(~T1uRj~D)R3!LZ0cyWo?wc{VQNnl8d6K0fuHtnf|Ufl zCNfu-->t?KYggSKMkGGd(!9a>>64um6&V?%CqqISV>$plKH}ZTiI$_C`2;7`g=2yx z?~;LWOdF~3L7{KR&(|bt%s?2GRl$@taeVEkv-$mjO@|0c4rvbw`;U87e(X=5_I=KtDS0nmh=5$KHmhb@NxU18(@=BV`F z4gV`9|0~D_V)C`Mmu}bgbDwzxT@pnXERLz)yX-m*_@9+|vCs>wT)R~N`HAr1h^{*^YMN?ceUwTPm4#SbahMl}_}XEh?~ zQJP-Sc;U8&NAc7c>`c_FeN8N}_{YQkuSu8wO>!1-)YJa=wML|*v2H8*2ZaUTcaZ~m z1w#Bka-jc9lfi#8yZ=`*)~EPsTL}pt0s@>24c=zj_>0XqVmZQkLvWdTp21a2dUYzj zX-ww%?leU~|J(G82JX4JInvnvpZtr|YfU2k*55$CGA-TZ$O!9?;7_x*UXvJe^R2$X zXnUJgO|f{exykA#7q-}JFV#A@w;bRXg1gw-@KDOYv9RYORWwl)8W47J{zl+}dBR>sPBZgFZTzSZ2gT0!%2hOfunnvUkUIca2QGW%x$DXus2AKMDN zt1!V`VwL(u`^}cqS&Pw*$R4OtN<1w|+C*7oCsav#>(*r-jf_4?g0*@ncvYze=C@28lE}iykEFF;9{6+VYJ+|I z%E|%ZB7}X>`EsxB_F}5_PSmoNi$X3*tsU!_iS5ssDGLkrJyVr$ka2+VoL7GD5-0{9 z6%5YAW|ycfN$Ln|;ajWL6!ofcM`-DoUk2nM&{zXwMrSlNH6bKZA>&)~+rnd1XS`v(CBLkL> zzM%8D=AsjRZgwj~=&l(%gnj zLN_eEe{ESsz6crWFQ%C&UvN87^pAn1l+YGjT40o9f zI)xFQ62{^lJqdt1nOSPP>*_AHn=KlW$=?EDofRo9|{!>>|Iu8cLXsuo%YYw)hg4GOgLUOJ5;pT9Mf&Rov+mQD?Nx|e@6=Utr_X1I8{RSZDG^!ihq=<(eoPB?I=w2v%L$$|(tg|; zcrK)`oNeJEJ2y9>j0#8!kAshki;K%N!OBP)*|soz4^`+o48Wvj!)D*+Gc6~%R7TK6 zvY+DmN9@#;Z#R40A0jv9Q+XmtcUTY7@oiqDja$2~nuw@6*1oLXZKWYDY1ZFy!bPZ)7Ydzd%GTV#cH8nM1oJGDJ+ricj2#vbUuEPGPG48t6rXvPXekj;< z&epxrlqH%qifQ0j+eyBMB_4S(@C?w2kuj1HyAh~(2804nPK|h1r{RA)ZWb9EOV|3@ zZwVUDx!HT7;9%n@H`r;#EgqZ(Y&p5iY(EPysi8aIaYMb3JxZjup|OuER!B2KSNx$1 zi;K7Uan&JRDYw@urm4OefswbKBCg5-8mR=JZf??|qj*VkU}MN@f{M@lp{KCMX@6mA zKeEnAzRU$`;&!>uJM#=%jU9esB9hHo22iJfDDk&?mo7ROr_%v%{!D(%{5jy$Fbf~d z#39A#rR#F9#Yjv5$Z+dv1ASp&<0jUMmo8pES8We$m8K;^HEse`nUkt_%srX1*Q$DL;r7ZY zEp%mV#gF)~bU#ME{k0k1-h1>qE}mkf@x$DyUc%MIrYF2l&z#Wlra53fJfW-!8aRIR z1)Z3OhbLD)jSn=Kd`Ao^+-l~teSLj%b8fTMW^{CPUO=Zc4GA&}VE<#UST#rP@s#Ck zi?AbEX*qkKJIxwwY?F`*&S;AO>gP0b!* zp4(ylO#Pc~Xa=+39oRTcnlX|&tC^N5AEZ$pm4onj{J3$Q`%^Z???_TLbf~ciXK%nWiYKjVjZ)#a!2+T)na0uq!l63ozP8kzVvtexx>oN|!2u^XZL_aj`=^l$3fb=Cu6lr_GmWYqb|jN+hIt?h7rD#sz!tq6^}&E2Zg; zeq4BVDw^7_urU8+vRX{2zQZ5(;l7S~{A67eMQ+a0k`YZ;M zIbj-UIkYnUh_~qt*wI9i8gZpD+FeOavsb31(Ttc zda0YQN`#jl=DlA-n-QPltt?tB+n&7RfHRkA-DbdB(#_k?Df?8*raVuMbU>a0YlF>~ zF|DQwn>)3mtxN^-&&kQiddx|6=D-fBd+_mNY#rcTg0a4tl>;Aq(bv~;MHr&37$#A&qn7!j5to1P`Pl*dqJylQbnI^cNTvnyYww>!iLTwwpFO?^L+lz z#MCyCa|^_1Bfe)$3%pNS_VvpLf^Ck_wW?jvt-dw1H@WqE*EpdSyzVStmWKt?xY@n( zTzYeTOZPijQfKBn=xmoLLj8bW%I900(p18CSsaSmC-3mgs^JYR$B)z*m(6mz#zGAn zI}TV&PWBhv`r{cF7Z(+W0XNzn%ad>Qyv{E6N5!9Q^|}q?yZ8yj{^vh}=*Qy(E%+y% ziT0Umz`l%FS4vkJ#-7asTalOE^F=KgL`yw$gT7+_)i?AoNI}FWA{)rT?i|&bH(pcNLlzIfrx|noxEJc#}f;_Lu#jk!{>flN47? z&j7$`R7?)M+deR6X0KD(f(?)YHWd?<>+K40Y}`BK1#LmV_eA@Ly!vydJ*XYC?8@Nx zx7Vy-QKR-SXurHEeFs^wIA5EoD`EiaDl-X>w&sZ*p%+a;acw@brggqNZ&CCl9sXTD z(+uB8^16Yg%~hL?i}fogb}sh2Ty#yE&1Q=Utra^xc1e`1BQQO4MZ!~p zWBU&dMcQLqt3x}N=cR7ujp?6gnBDYOro_sVheS)18f>?q>R}0KlQv|1Xm~57i|+kS zTbCaG(3H#T@#6v2S#05`yLY^fFFmOhx%(QMk{Bi~&AXquS*83A`whB4t|qykwmtdz z_ukHJ+xNor(fEqc=%s#c@fJ%=l8;$Z}|f(!K@ zR;g49yA4vf9B^38mCJOSf&T*UC9TJ9J}zOPk%C<6s(ndOojLGs)244I$zkWbm}i^Q6eByugI=qr6|n3Ae>;;U5b)O9Js#`%`WBDN)7_aW`^`aMJ>K8n zk0O^R;IMrUFjMRG>0G13P9c5pBvfM|cEWsWU6s)1G?lw-ddCLXxhI#qoH8F(H9r&V z4^z{mph`9SxWxm&XHeWQmot3JU zrQUI7_CqKTXK3r_AU%Dxys^Rd;Ya&Qo4>S(d_2Rqwl?8em)+?KUnI0x9|A7$&&z|> zGLJ<#nn^!QgVo`H&m-viysCH8`ug*E=@QLYp+gdo&N?{WsG6|tOs_&?c4i|tN?bQ~ z;rn!La*rN%c93g7YZ%EbvhUKR+Xl|uYDGj2h0HnfE<0Vh{tUr~oK0Fy?t3r2YoK0s z4=)ysjgGBK@?J{IcJTy;2gzrCnc-UhLnnz?v}!G90CNHM41LXPvOQk#q7U%CNJZ7=-K{N7j|*@Dzvq>6!ItOsg`}Xgbt|x) z;B_&UHqKf%G10cBrZNVnBUWt{d@#c}!;8XQ2Ay$_gvONXK+KZhagTYfU5cbuLeGvB z(?m+O$IO8AYgTYOFBiqpW6Y_%KhAB(eZdjPmi8Kvci3#oR1Yi?^vYcPfxK-g*m-i6 zDlJG81VqqKR@`m2opi@Coioqbk!>HO_MG9lv!8iv3+WEnE?BeQOn;prp-1?geg^(G z?%p%1$*x-$js*)SJOYY}fS`zUq)H0{D$=EQP+I69p#=g_5fM~CdJi4xQbR{YdI=q= zK`Eh^gcjlQDdTKImQ6nrqH$Uh|qW4Cv%bm^Agnoz0QqnZD<< zCeb`MGajuwqIL~jU+Pu^10Ab!U+GSjn{50DESlfEIRwPl7S$M0r-=vd?(TGSbR^gH z+3udc{QUg=-K~}0Of0Y#oBnK8(%#z^^x+=tJbuvFOWC3NU}s?-k8an@H+ZJFQT=l>^=H{vd}lpv9iph717r-k9&t0bZsfPGn^u&j7%%^aOGD zWiBD^^il9OCr+LD>{uLXVsRqIq{?k+3x_&Pa3BA)a{#C}7P7o-(nq`|RPkw@0|AhP z%|R{8bBG;q>j!?JzzB>vhNPstdT$;_Ia+ZjtD1#+O)j~<(F3J~?|J!UdA0j`;yYY= z`#p-h^1lXh^)v_-N6t<8b{K2qS;`xqhxLqF}4@Zn%K zHF&txHZzEKFiRs7c$=P1a30-UU6;nHFyR|FY4noxOKsGDWG88fb2?V9y>%1Agj9`t zsw}hq(HbqxS;HD;C2#*tJHjv~o^vQ*wW#Mi&BbE&278SUy;lK!XrisNqki@stLxz= zrcTIqpuM5tQFaA*6L3ogD6+h&s;ZKF>&x@{#~-f?nK%E_GQTzMwc?1a0ai56w?2Yx zX|FrnUl~5BK2&r$%UWgpNcNPgqe+{Yo_<-}AKCa`8hf*l(DR%+Z~k4en5x0<=G_Wz zc5aM`_eTGq3Cf5;TKn5>FltZMM>|J5Pa{(W=d+vlKA_Sx`r$g@NT%OT6&Dx70fm%a ziWB(+#`%o7PZ#R*wq1-#ooQ1gX%P%<_R&l}R#aUOLt-Uln@AQY9i^)|{RRZ(8$d-mhq zB^oxB_4W05zUSY67MhKXj^55OCwX=vQ+&A4Qb_JIeNlzf!CG+W zlIwgw=jQty@E{N?@);*5r`6U7PH!Z#1POJT`09@H#xE@?Lnr;xU?ITDj<8g^Pj5{V zuae1fZfEQOG$6Md8fpiXOVNFe0Th~wiV6so&aSQzNC0%c%4;x40x*y>`&%8V{R5q|+EVEW{jeM_QSr9_F!lyDK7S?&kC6EIYPThQ zZuH7{4X0EKtok!hNP*yPXquuqFUVV95?wn=>en&RLOTplO2(PoFsPb}+Dy<`sV1tp zhKae(yDa{Eu{!bXmR!&cL93@AjHe}tyUcb0Yy)i4d#!;EoYgQ3C}}Dz7MRp$HCYyY zPd)G8h)ruNW&_k*dX%vb$zr7fZqa1EwJzZeRx9cE-I8~H2q@>2fU&0MnIo?)DWJjO ziu+Yx$7dwCNQK(2XHq^w`5V2XIhG|9@8l^lR^2l5<ILpDn4%1aANNelv{X zuPEwA?AkSIMxNvyES1#WMgeNS3b((!Rd-mkNv4JJSPr)AyJX`E(WlmxDYqTW2R=sh_nRcuOhZPmi`|_1jtMHuWxLkUg5KXQ{I;^>(#Z-RbErt=m&~lXp|X z!q0+RbI=loPX5&Z6ykG~_nzd7$L>l5L|C}h(&+novk%kD3KCV&wvXZK@#+#cAa;uZ0n?%uMG@*a z3Q(FMpIKcR!H77F-iOa9nV8^SzJ$cU*M2{Wnf&#OS;}#|S{^z{mI_>%092#52js#W z=+abdpbgBG1+%lmku?E4nIa`%g7TW_#N%5Ww z93EyI>2yG7nft1H{R%a=oZ)QF2 zvJ1y{cfk9?!&x6)tRmZMhuf{KD^2^0rwJ>nxZOJ3jh+fi$kV|20YLNfD-BD~v{gMv zoPa#2c-q$uTew!^|JMzRLP168wvIumwXIK?Tdk^O9l-9OBr@Z*QiGqGy3K7^U@W;| zq{*#xhKi9ZUBYcq*BXDG=8h77ckQ=qz)%9hJ4>&42F(A$y}d|ZX49`gsL(66v5i@o~FTow7Ax7!=Z{z#kVvCROuR zPZZ($HenAnw*FQWLM!njK4GI*RDilTm`RE!>~&;>d90Bf3)fwnoGoUd^xJ9HM2l-d z(x)CE;YC9Ntun*Qb9m%PcecMRl z*;fcj)bz)>xoHr;bI=+YN^7gDA>oXYo-R#64AW{Ru}|(R+P0a|11tEfcB_IJ4iNFJ zdk5frEF1+|94bR8I2A!aPF7=VE|@weY6W!rBQM z9V67HQdrTBhtX%DDf7v0SpMVNE%6&?Q|aue9L1TFLW|MZ<#WUcMd;QBrHyE()X$Q% z5V9G^I#TemKO9cH{y}2@?mfkhDEqOG9pxSZYT6^CW2g^Ut+}m*Pc4kLGHu%{;NZ~N*-3x{%jg9z!G?v5o8kf!bhN);%h`ajKS}x&i1!YH zeAYc_@@6y@%sF}BaG2214P6|%ma{1;_DEmLVUfy%52^MgHj5zo+d)574K_9Ch&L8P zkUot*d4kw<;Ct5D!0m&Xe%qcq@4WcJVZ3O?QGU;IdP-ieuAB5MR&PWB+BSTTT{#0<=$@!AixdmA*2V8kV&vWOb++>Bi)E)vqY`iQE$57`bDzUbd?|(AC0cMG} z7ekKNYDAAlMB8k~QA5tM{fZAG_P&~#9Oaa9}-~=eK6L)Z@2IyrRs@EFndpenXwv(rp zGSNO92_qm+0WJ-shekdLe9vF|`}>y=e+19~I#krG@xxqirkAH@>)trXo9FwiXSLu(LtjPS$=!u}Twx>8%W z7P&d(owGJ8;MF;bMeHr!>^xlXd?KbJSv~yHOuaS~OT^$b;kDOaC~Op@fCpVqeDUk+ z(AgqUTn!d#o<|TByR%g67~IAb0ZeXceBxc2LZ^?$pkHerO1lf(?KavVh&ZUNRe|g7 z_qwIkaO!h2At6Gtbm{u#V!-j;^dBGv7u3lpZ?Q1ylkVQiw>$&+{PJ&wv3vVNHC(61 zwevMuLELAWvOjTt!Q@c=(=G^VM5e>-Bk-Q1m2-zEwKJQlmikyZhW`C{WW^W8~1k~ zj13S-&3^ue%P5!S0T@-3mX@n%2J|BLQhemvPYE=f5ua5j=FeTdh!X1DLD52ZsavpI zG#j?Fq~@4}!3ytMrD@_U7CAKt{sc?gUl;b+xBKy1dZbZ2@9IVtHhQ=%!(F$^?RR2H z+67`iqanO;{i~~@|8lbuc9_q#?sf&2RAF~(gD<8@a(gKKw#rKF=PQwOzn0K73<;yx z1T*oC=P&968$Aa@QV{O!zwEth(I2&{jFh&LHpT9`Ab*2)Q0t_%K`fD z=>!4J`sbHq7nddd()1*N`cXM|wMkt45^YB@d}+880Qg~lCZEr>y?O&T+jO$jA6d3$ z+YIEg_ZtF>1UA=lal_gw28ThRN{u*GN3Phjo&HQEWNSkuiC|@6H-UONk}piUCO559 zWPiG~k}1UKosl&%H-9RKq3$XtJhvSN*N5U~poqFmw3{GlDqUAkRtF2`9^L01Qxe4D z>+y_k(KqgUjHlO*OV0~BLoSDuz)Vd|^@oF31WxR}E)8amQL0LY3xjW)`Q{ti1M1(rpd>FXKP)V)ay)AE0H8DrAAp5Hh!sR`uUhwJ zbVT2i9UcPipCK{QDY7apNs2T@vlKhBk*Gn(M8natFj#=Afnne4fNscc^p}oj zANwQrAg^?+J5c|@;S(ohd#99BbgzNVL^DTw2_$=tfH`RbfD@1-EqLI0T8w%+=SS@- zbQt^7#Z6LCn7FU`MR$irC5M@u4qVk zo-;GiyoqQnNYM~wsh*?Ft@rqf!%$JW;0ACx?jXzqUI=6$S&n(3=8@B$}kZCoyJoFsu z=*Uxy;+Zdphuu-WjUK@`NGb$iS4wb|-I@rZE_J4VAuhD*ZB*CyX*p zjmUo9K}6UkOmhT+oFbBPEV%>6PfXI6{f4BJWXkG@>2k7Aa*1zOl7AAmVM|<*YqSyP z+C_(k9<`_`ygF{)yVVG@(cc-1jt*IM;tqVDVE!EOPU1_u`x!`U)adBw&!0bmBeaHF zx{f?E{*fwW;&wPttZgK`mr2CPX>YAr{jwb|<~I^!%pM3?@j}ZDuCC1&8H?K+ka_5< zztu1ATJaW^O5qmgOP{tO7Q}DvSk{zb)H`0idUgK%`S|LKkh^5Z;ric7%btcy-5A+h z4n`DJS*Cgp%?11#%b{fE_a-+_Kw9atI?K!NqfjXO&axr@j!B)2Ha3UPRoazHt?p6U zy@b2=7iUPh-oC}8@BRb(B^5G6(yyiRwGAEGN^Y=_)5c4`)YQ~KjmL9)^|^xsGt>Js zkgxp5Pq26&dICZw4{d5{Vv_QaU}b&OAs?i=0bZv~3xkbH5O>lt@WFpi?Hws#*cejf zmPntTUx3|eAGA)y0_T^QhuSf<3iwUoGuS~lUNg0=N=HsXnv;2M-Es|@kNcRvR=jL{ z-)W)do&O9KuGBUPjW)5f;{uID|5^gjJ>hgW6dMo_kg1BMJa>){eYom23W9s8<0$XC zK!fN|a6w`Pdw*{24-O_GQbpcl(_3rpo;)3;i3Zw~=hDzl!k1|H*@Cxcah*!o!|8K) zEE+9^@_F{`nX@xLo8!MXJ(N5SOJ&OV_DBI$vi_kM&wIr+fWATm!*y`7y|uHJi6#{# z2{HB{xP^y?vM^M-%=Nr^^M+p!_6;d41AHo|f&ohArU<`)K!wXyND}Qa=Fd7uLhdft zCT+@fbObS7eTEpv9CQe?U{y)0y-vB@(Fm z9I!^!)u47nJ(=!#2Ey@AmWnktB;+4J)qrfNsfms>W9E(455rnpTZ@YN-Kg-fsf^WA zdU1GS^}8PhNK%0?3hKE&TklUrQJZxV^6cXAo^r@Qc~|xNbIpQ*G$SL%XlTS4%65l! z(8;FItydV)oZz)3S%dfY!?o5KzYo<=pGS^q?+Wc{_mw3`&3Z9HILHxlm4J~;l=PC2 zlr%CjI^v#?myY}~sGb2hgz)g#CXra#*y3=Upx^I$B{h`L7OJ=7VSpdD>PiC90)*trnU1)*xw#u) zCBi9>!z3>fil36m?@wDgsF%B5GGA>!$Y@^+dhOtwNT63)7|Ne2LqJcx+yI3Nb#?VL z^TB*0aZu)StlQU~cLgPE0n7Ff^GN!AB}1j1trgxaN_t@>bs)-7G%&vM?)~msY6oy} zG2PY)vF%b{svU7q5fKqR-2s8FhXVsmKZYJUG~bBfb>)(>NGNj7vK#7JpX&v*3TJQx z+1m@(SeB~6T1-qlgKk`abom|wOFAf;iblzh0i7e3Ye36v(Z{Wwo7%+Jq*VyHFCJ#pl= zQv_z-I6zO&2UL=hlanJw1id!x^n3ub4)!lr6rMp_*oVnAEMp~3XAXyqvMK_uTT9odrv!D zLYslpq|U;hIPnS8uvp_++wHf$pZLOwFlg@VjC@T=NjYBSUQkf5QjH*1E6;Q$RDqb4 zXMkap@L26imhH*o)X9&RLLGpjIbbBy;B>sk)xhkh+oAx@Y5IPLnuaDl*20gl3W{{# z*zbWN$Vi#JL7{0w%A@yJxOBfb{gSERh6e#^Zl?X(&?w*<&8Lgb^U{>E6@3k$Vf$WR z52&rFn(*GT6A;g1*g`PH!`Bn4Lcb0-MV<|ELJNAART?d(*Y_EL+ZT-F%8pqsrKGGp zsn^b*E19kuV@`g~Pi9=MNqT>V@YP55F|S_59h_Nk0zpIyVW6)&O`PT&%;~eayOe7$ zQ^t7d8mJ2beOJkJlV|%=InZCTpD$mPPq+&zZyeWMFNm?SP6M`vnVA`&&9JwU-a93u z<(?ZhKxwU{)DE0ZYHBK=v3-7hCj+smVha@3qj*gsMcGsn!}}se{PHDk-IDF`I7&N$ z7{W@&D&TB9JSsMl92^Q|uG6iT5lMUDBm8nRfS;U6`()ws;K5hxu&-Yq=sn(i$QTzB z6B8BHB!2ndsjcxMG7(5zK+ltE^n6~1O3hi#oDo5xjUfwoZVT*@I>wBbPIZL@`gkqm zSI89U3UpI5SaSv}@l#-I(w9T0TDi*+SWtMrhepT6amxF&O7WRMRTG3z)tQ4Dy)cZ0 zZ0M?r)ZwD=%fJUVnz5SWNw-zfQ)!f^-u`d|tYAKn`gwu;1K{duV^U0FVq$EpC&1(Y zw*~|C?@*CNXwM)z>|m@I7QC}Z_;gDyt-}JL7hv}!j~f(JiJ}#G%j#9kb*Erh5PLXRE$oH>>#g%!P?iNMdc2@gkP;gPJ7mR?OtG< zo2=r&wWkn7X9<^w;x`$(L>wMB7l_j{s=Z88__fD) zY)-h!j`uP`ksjbk158duFAU0s=_~O4oelc?PDxc&yMX9V&q%LQ)U0h-J`ee~`JKcQ zzujueL2bAKT^XqzC=f^77IsU@k;W6nHtRpKK6PVy1^9thKs#rvwDLprV08oGu4`cd zAZ>DdI|&*JqVtLJKfKu)p zoKb=xNo<# zCve1p=C=YsOHggjH^4Z64LA}qfGpza)2B*GO4{02{DV(GDEl z?5v_fxpV>IBzT;}0UgciNsUVhW})_>W;?;|hKm%CiRfb(^Iy_9^xr)p<9}yU)PMcE zJ;ZNcIDe4>^pA8^^$74YHbRS>C10$ax3-@1-2740^=0)XQMzm>l8n_;8B`o!2EIKu z3)7}d5X2&EkXp01mlp5ARho=Xk$X?P{AHFiU>zS4t-A;{w}7Fv>ky!QK#_PlR{*~J z8#DSyUz^v7>FMd=o+2Izz?I`; zK}XFZ6y*8l-!&bXaIWcylLMfw^2|ul*PX%B;8OqMzJape(!xR>TA*9ijm+>vy4}@3 z67)cvbpLWS@=zvGpKL|6G*Gh5NO+ioz&4*>8dtV)V#}vMlC?fcpyyz z^&Mg!&@nXarE}&P-sj&b%h{c(><~kaCp7?Fz4hERvMpf|UPmBK2Ym*+xjw{8lM?1V zpn_pA;uX>CaG?P4zRm$x^Hzfb@i?l$Fe(Nd{M);!c~YBd zhLdGRzC0$MMnFHn+n|`c;u>`pYzS#;ny|oF>w{SE@(;_#3!~oK8Ex8w=7M1XS4P3# z;fF)OAEG6j-g2`kZKzi(($4pgIRB-|k~$24x*j$5Yu1rDI$^S1QgI zsKq%>Jyx*ErcGIS%MJD#02?4U2Ei`MaoT8?G6n>BAqquTg`U=vJ##>Ih8imA0BUry zEjJ)&rS4Sk+G6|>FG2G(M}7o!AWV&DPxvVUm>7-*6WgNlZ>);v58(0+pUw@v|E6O$ z`J0MSv=(TL`BA-_Mp_Gk0|SSk{iyo-2|Q2p5)gXb#?nyJq-SA}7z6K;imsSpTb9UN zLyclJ&brA=uwEGFr8`6QbMPzKRk0-t9MiQnW0nZA%^T}E+L)|?UGTzRDLx!0)%zqn zAN3NK6s}atv$k1RFI`KIuv9BaE46$M2a3=1A!3J;vhr@4n;F=OQqdWpf(IhNgA$+O zA83>21(&a)L$83wj5J`)j81<&-7;fP+Z8i&C@#%7@s59*pXT3QZSpy-puC zsvnbVZMa4N5AaguuZ1na&{|&EXZqCd0mFDV@}pHK;Y=`N-ByxGGF@j+=s>LBBbClc zfSBci(EJGvV?4MT9a)EFhj@ZiP6xXndh$0--_RIMW`~&9K}w~2e`SYIyguz{iXYOr z_(fc}BMk32Xg{8Bq*ZmaPR^uOSHw2x)fy(3m8mcBjzlI_nftj70)s6z8~D!)LqAna z?J^fAxQM@~Uotlz|LIeVmPX3r?pVE?$yplp>2e*E$zJVP$Bt_pr$d&jbYI>^nw~56U=|fA$`zZ(dkN0Zx z+EL%hDlwQ|N=R|olx`dd>)Y`3BDX+8ju9XF5l~Nq<0^SuP)Xf$DZ?I1X-)?w4|Gj) z0tDA`8G#U(;hO*11_~99_LX9&UUw(39*9=;-eNjvm0-;2(y3yuEA(_I?y1K>Z_9z6 zE(~o1r`tScR@_}G2e$`KuM7;jPeQ4$8hQaw^fh4UVp+0UD3rXN2jU&QI=IcQkxW@;z&lUhht@&=3Fi|D=21m}W2qxBge z?7r;?ntPr)`KfnEo+(#Y^#SKt9ajpPXfC(o!P#Vu$?4y%+|e;nx(GK^|$6#Q*dp!P2dNBN%q3IK+Obi@k=F4f zP{=VGy2oxc)QZ1o(5Y9Vlo(r?113h0fe|mm4gGo1C=T!nNyvX$!=wPnblFAIbFV~t z^$L)aD)C5uetxtB!W0qH-kvL?6Oj-W28IwhHIeVfS`R6hnyP7V2E`=fD&+&Fz4myf0*KpO}1B!6% z3>cKQm)D6e-+r?o!ondF$0xdd+xO|)lnc#BS+fjn_j_Qd)>HDH7X@3}d%hT-Jw?wyWVW;U?II5hUJS+l>Y5#1Xav_ zQvBmb{2?Gh1A2cormHpWOVi-TiicN(33n?k*7a8f${#WQMf= zl86z4?}<~ICEX3Wc3)T)O5b`O-$muay&=TM8Lqo|8U$laio%;eUBK zFqZ^))?Lu;tC4=)qy-DwHe1tRQW1S6C4iNfHBl{0SsA6Mx%S-m;$;p|R-s!0y~YNE zyv+C5?{4cmIOKQJdwwG5owQkzuKPSYG9Z=KP9!bY?82~QEvk~7-F5V=o*p0{%*wJJ z;EIWj<)Dc26j3PAA!N|Gu>WlJ+ogh6IjyPBZ62BNnQ5Y}fI*+WP}*lNT-;$tPH(Jk zabj@P`ux`Z;-Nq)B4*`zfBJr(O`AE5t4@{M=!`TpRia1W$%kebyG52IyH!kyC`XDS zCXCwDi;4-Jz}I0h^@e#_BeGyDG$h=xQcKUeesioB&n;v%E#JZpy3rqv#SypHzN~3v zb{Ls<4SWm43fmXM1BkLuo0kY*H9I*GW%&UBngt#P^7mD;$Lr84f!1P=TIXroWE2zY8zX9d zB~@*i@t9B~RP}BBoO`LB+vNFnhPb)1wKD8p{@DveuOhcL6-4V9`>}K124!G8x*7Wl z(5Tl&1n_OBh`B@Tcmm|n3;aG4YTjg{0B^D(aprXO@5jaYRYT@uH^6_)sKbQ(1MYNt zG=4t%bxF0F>gie#9ph&Y3XUX}ldsRQM2&8Fn+Wios`sWpz{Q};mM(nYlav&AgUzW_ zm+kHC4PkoYUb!m*<5k*z?(@`2S6TTYCXw;1-<$58Fg#DUu+eZPr9bo3+|re`iZ&hV zxv9nki3`6-hWdBjD?aHNy$T8=&z^Z=VFR7N{93%XRG#kk{o>oIoN3(f$vl9&HN?|< zu~2B(pX#J%MVq)rGsH(dXnKhp`2JJt>=_pGkXaG58BOTj6D4*JNbL!s%hem=o3?Yx z_uj=~o3O_Gt5LUv50jow6+d{~f}dU}JD8tncBszF%d0``cIKNfNK`L(O^WqzOzl!K zWv-}4ZD!R!KZmHayo9cCnf^#6*PWu*)!2cbE#GF%5wUXk0ET7q@$JtPN4jOC=W74D zipWtEr)5WP98fpIW^3PEpx&P$!dG5cZasA0xM{z|c(4(z0f)bz$-I7@zF=&9xM+8x zm0LVGq2lhR$fAu<^_WRSRO!fO_YQ@QqZ7OP#E+r05*Mb!n>*pfRcG@)Md-v!pe&Zk zYDyaCigIMshBj}5*VXt;9_3ghqe!Q)D&o#u+MHQ zUfN`2=ZcK4SX5BW+}o<4>&vKg-;IASZeNYqdX);}>3-F%pkS?vd--OnWNA0JN5$$Q z1NI`X)RM_Fgx~KU2$;UScxGx|R$i|}*@s2L9Zzd|PtmA_MAwZCJ8z`(@Fxv?x&=X& z4a+_9#mG2$LMkWKk%7Uux!%e_KukugQ@FpyW%#hQLwt@iB|W?H?KIrYp|*bReTmNq z^z2R|Ts199+m0bU_yTQkwB*Uk=f^Nf$>clLTlMoTW= zELwx5Y9t9cj+xjED&*H1ZFPm~u2<|2JKUubp{Sv+B;;J+$c}wgITd@nh~0>?zZ~b* z4T;t~6Id0IP`Z$Sv)7@Lo#^ckj2@1uC7lgQl<-*Wb1$aLzASju$ueIVjkT<*9jHjK zZqayR`d&a#s%jX2-#c)3wKTQ(eU3S<((d>0W-&3x8r%QTRd2e1LSnP9BX?7!{2x4L zjz-tcMD?3sEEjB{uF8^LBi^`I)8wh1Cx1^dt~Q{AKl`qIM%?~ENDiU0H7DT2x}j$P zLS)MZbzc8qdYd?wI~%xTA-i! z8xHt*RvP_MD-1X53&8B3Ecda~Fv2S#6gOfMBV_HLY$!a^*3nU2VE6Do#rTw{9y$DT z=|#d27mRj4#w%%KG>nPM-je9%*X0KvgqFraq>)Z zv+LV%v8#Rc&4S=OEKu_!$RxOEu6p)!u83W#quK+f`;s%*we)EN3^HtgY&Ur{(&ddy z{Q6ByQuDXD(53PE^~>Eoqodym2y{KW*xS7n>ef9Addy%SM{vkNg-u(2ai;^Ty0yNg zu;ix&_tMn)_OJhlqd_O-+}dn_fP=>lm@}^SsoQ^R`D|~d)y3)6_y$h)uGzwrB4^yM zNpw)${M-`TCk1Qz)}=4+?hf}fVGr4C?TZ+N=DMfVH$Hg?w3W z=L*ywuE36YB}n-&lWw4+m10_IY}Ft6neKh4SbSk`&usw}p(_ECU&Km??gY0vzBf_{ zCO;w~vWll`BFOZD(!pcH4bhZY8%UOeqjfVP)5eiH}5>>CEuIs-( z?kUW9Wky~QTipi@s&mC9&Xo(Ba&`NUWA+9D&`{?hx4_DM9e*ZkZ?$x;3c)5`PUoz_ zU)^+rJ<=S9@kF<-1L^{?_6#vMAG+R4O$dnl_nSQ!3el-%iskI{(-6FAed;RAu{gWzFy;g$o zJ)xROm{jB8fNMB5yNNND&at?i?GZJ*cXXPk=+4`Mk=kGiH_rzq;@)Q~T{LghPYJj` zF3-rAsqdx%VO%@26}Cg`9#~PHHU;8|QRVN(CD>pArES^r(-BcW0m-(uK{O-NeNVy$ z6*QC0*^6oKy|D=gb`liAfpj--T6L8?4axa9oIh-Gga7Ku$5Ef4c&zKsq}5Q_>A zZ6(Ci*3^mJ2RdqJ^drE4T-A*tkbuj{xjrvQQ7N$09$CO!u+@34z|lHI%IGzb`Yq!@ zvH)qX^^@MB#wk=n&(3Uj!+j~w#kgzNjKcGU&C0Srr3#uvO$&&OVJxATU2423(%hAN zXZ~lVG4y^y8FFhXC5jR`I6Caf+!-|@#WVhPS+V)%+!YvFw1b|VN_gR!)oY2dv2RE-_$v_MqhRC5+_k=$I!W(&%eY4LO@f-|wA zIcBrYqhsLWW}S0Et?SBj{obR~DjJ~knzlIi-N-N~KkVjKAO{F!J7i~iZMz-Vt%X!2 zHNNl~!RY?kb9pT!rtg_wl}WHgE!VUx`7Bh%Vn+|?>EmYW-(8*lC&h6)fQU65N9`@9 zC!AGvnfWYuz8waFjGStGa#>N*mv?XPQaq2ux}Wkb$NEUQcV{qEEhJ9CW0V>P{NG5X zQ8lT=NlrJRe-c`LvP*I4wo2Y(6X9Kz{=9GzD+1ly3*7Ax>mRwSOnSkLdG%|>yLRGt zdF<;4QfVFo9`|=TeTk3J9*+; z+$NX^DQ0>QWWIi_^js;nly&bTPXHBOZp`qYtA=7iA^|tUv3C;CAi! z7&=eTP)l4iEF6G|&(TpvDzGQE%>&b;HLjfmKb zpt@yt*KFmif4?g$`c{hBTzy)&AQ_b+h%id?RvZ>K>aAitXgrr*MV}=N29~PCU|Hiv ze3i;JkfN zP^yJfGTszj*R|tlB;2h56~$2hUCD9S_<(T}Ho-uNX5TqUWvU>#Xe5&y6TYrQ&eI`Z z^E*sED!+JgoPL;>uRIm$wy`???2z+t#w0_4r1be3wxZmYvG{l`gF_Q)PXj<$y3v=m zn>fYY!g)8v$WN}J%=)4hH?9((T@$cf_K08e7a0gKI|-Gw$!lwwv*M~+of%IBkWhc< zhcr{II3t_>M*DD4>a3D{P7)V4cPe$A+n6j->&_k@s%czy)Zfv2owW_$A-)+DBN66j zlhEk*JAqjO&B>V)B%Xj4giAYF-Jce~)B?vQZFQf46i`f8IZ3Z$F+By!&92UqDvWPe zz0lUxd6(%`L@%2@u zvI8czD4|-3eQ8(**qLsRUg4d@npFn|?tIHI9fUKHjNnX8kp; zi@%uKS>SfAP6bu-MKs?Zz2gUUWglPB@*grWHl)$W-IEPMV__*ZZ*Rn|fl$Pl#k|3- z%vHi(X{}SE>CVZf0FO_pnO!r*`Ud;#+WX?N=(bdSCbuPq*%)9jLd96rcH5^IA>|Db zjn^hp&?sYz$lcBn>*sbHjyvBeI27k7lEcS0CiuNM`CPBMXaMgvPOMOlXrYM8n~vfa z=TxR3dre7vtG2J^b5PW|+~P8Del+tl_|Eb2V)llg4J{oV+$A@hCFG2%eVPtv@Cod< z2kmi9WuW*iqgCr&cSBTn4eL=L|?cGjQ?x zgo=9JFX;^%kyMu#=JTo|9gDWs>Tt_j+;^bXZOgvv4;LeO{VB_X=A?}fr%Fsx9a@$&)YHmiMUQA|)nb3qY6*BZ&FYC}ANnWle->krK!YR* zYg{Sgr+AA9aE5Yh#mmD+b)!~1P&!Sj;Iopf_obi*&O?>lq7|()Nt)9@u(>H^qIz9& z?kpw_Lsu~Tb()00+t$l{OifBGe8x^T2;lCAP;C6`?PIun$Pyjx>@%dudRqx~<(`y zqjNK|5?ncFh5P+#8A>nj-yF;yF9@s){T}u`FHGFg%Fb@fJ6-&6J!593(^1vG)#&SJ z%aTytgPkuKWh(aRcf7dl5i{BQXC=`a4I!jGaOM(B1Yv;-d(U0wKHHTo&i1@&Xk?u| zJ~7Os+>suyt@{Tb8%IrRZSATSh6unto{>0je!xHbbt{%mrAlhdeabxw*h4$tR=m`_wgzOZG9%_8)&eyh)r#KNO=m9WFQN@g%&qm%szGM691DA z5m?Cg7|V&P7YKTq8KRX+Q+yCeCHOuLLdC7dd@;U%n0*1yKNj`>e-)6ldjB7|NLm=` zgX9NgD|`F?!RFKd1f98kQL)sdta4ATWJCt~9%z&xt6qM{$58hle@P}6LU3XDx}9~5 zp~)?p2luas2y*rN49ydmx*aG;TpWKguFHgLq|r-eIt*9eg-G|bNHtDPU#2pnxvT3$ zdHqAs8Rmvniot6mzm;+nC>V72wN@`qp@d9MVhS#?PlsMUK8 z`8;2bTzo;{jg`B&&|U{7KD<)~7<;ecfxNT0HdL zW8-?OH(NE|Z}V_doB)*U`FP zo`I$fiX+A1vu~y>?`xgQb3PckKD!Bm#--!&$Pfq<;o6To<{>x#%&dTXeRvZsZ6|Z) z{GWLy5Qx(0|J#4;;)A@ynrZqU3jwT)^8GmR;mY5okOx`irK3%SJfLGne{%u;;ke`p z`3IQ3l7EQw>p$Nl1c9jiH~g5z2HMufnU-#0x(7L`%0eEvze1krWd`Ul3ftE?iHde# zCJ242@VUxxynZP-WPW~Dx|`2JDle*V=m+3sAeFcWj3THS|bL!mL&E>C-S=u+u1yyw;d+MF$Gor_91o`gSW!f#qA4h z$%r`O5G%yOexXvM?ZTt66p)ukPUz2O#v*nn)_Rw&2+CvI50HC;^S|BD%>=}9k5(~V z!41hde=zkIzv$`Pzg~Nb4ay)=T38rhpY>F;ClW#O<3f9{jN#p6EF=*Fs=*3>Ug0%yRHQQfO+CKt zr1@M;KB|`G=(QkSCyvd6#TY83epxWWt_od*bN3iYJQce@qI1-cCRTZLw{9%hxetg4 zu13kJ@{G^miQ}?O$)mMPuQF(`<{_V){!C?|@- ze-+KlSjJTE?W^G&h6^(va^wMPH#T;}Pw{5@KQgqU`dN`3grdmSSA3i66fq>d@yCYA2V_Qm+2_uAE>zbS?- z+ozaD9majurxuC%rzle!Ra4KRgVAogos*c&YwNyyLxNQ6{$GkSlGg(Mg$n*G$DN{C zPXDUbBTQ(Td*V-sfUNF5JA%OXHXj^s{OtIjaM{Rcb-YGnafLaQ7k>Oab@9)ile`3u zu=Q0hFf`!kt*mFTOgydRNV#MgJh#_2+LxDnW$ImjZxs-flq^dt!rrSy5{TO{gLD1#fuvo8?F-T&wa_gBl}By z#E1Vp4DLA><6ryZi(OKBbc6Pa{41qGLjwbYJoSy!yCDN`c4daVrgy?eCh+cFbi>QP zfaz@;EI)zW|CH=4-TOM)+8nfj;6ordSCC64QCYKk2QFAGT^dWD{F9fx6HMFy&0>F6 zf|HqX-JQ2Ue}9vRtc&aYrSZ#7($k&!X>ZXh}7 z&x-!OXuW@|s)9U-Ys|uDWZY4h7#<$3l1}bxpzYKNHtI1PRjE9UI7@qlR$VSCBBEv5 z`AYYql3*2^K2gwxjjHA7m09M$4uCHt{PQR!l5yC@K7kEKW#x}1&-fk{?q=mI%?KDQ zBepNo($dn=6~D8DrR3z~^sC6ammWWcX|TQb-%J5KM#P9+<(KSij{lFXHxGyUecQ*C zcN9rwOF}67zJ?4+vQx-TCB~9ngt4?x_LO}aOSbHcWo%P~tYhDXu^aooFXMNQ-k<0B z{EqMAkB*KG&AeXseP7FcUFUV4<9?(%zbRqo%VtFQCf}t3AcL_&+pChGATqa`Rdscy z74Od$@W%7EOJJt-?8`?$Q-IrSaa{VGd`3ow{{{cO+ErvyO`1%aHPUI$5ccY|vhpRF zTrkBn_I`E7yX(y88bTZ=|J~iL-PaHo2?$vG!_jJiC>3&Ya)8Db5fRbW)&?U=*RNln znwqNr&``kSkd;!%h`L2Zt7~kmc7ZRZ&6-0@Ow3q*3wpiRN9q6h+<}c@oZFTp1Ofqa zoM70u&de|RJwG>h8m{F1T&H|)M`Ql%m$Q>e!Z36G??eJoiuzJ58oWniVl?nip{a#4v$NeUIlpMg9s%sfN^~u~ zsPwu2+&MPT-${*u$At@oD&7?62%zrX4w9&Y}eS7ajq-!tErE7S2 zc$?Ra%2ijFM*3VR43r)eD?wI$w%5-`WX>^O-7KoAiYKcAJDQgVUWl58W)_FjriQ+H z_5J(zJM8RDjg7@eDF*UXJ`imyZKqPzN+ea+F;}Iu6w{dtWg$gg{m%zhR+!Ie$Z5-u zQwC?}=BCf(|M>AEJNrw^t7TEqY8ojXo?w$d`OmtJVOJ>0GCIKPbJkY7o z!PW2V!EX3KTrMzDGc^`W73AkzWThG?sAfF1ms&+2MBR8q^}6h{j4NSovflpE=S-eG z%hckm?EdWIbtIXPF=F!ku@4hG~zGZ*QAHrm-^z)%}n@}Cr%N{mvGp9=~Lq1W=YIA00V z>vb*P5~UGMP!55k120_y^E0o>>{k!%#81nkD+-0r!qVH1OPBxs7@PeIj5leTlL9TT zbx6gtR%K=e@XQ|{!`zr%0apT;+UDlEL*_$5LS|-Oxm~IlEHg5OR7+Jk4m!j{M?cfiaoloXga7)O zZV3H%HM-ubl9UBkaiwwjaJ>U=gX~rB3|a`;UW1(s9#9T zSw%$!2CE6j*x_d|2r!>5A}edg8c_sZ4E^`TuDKj9QvG`}5pV4w6$pf5g{;e#Ll$uM z?Cgq<6x~FoN8(sIo!Yr zhf90Ko<+wQmOP37Y}NxWVes7;?;~z;uN$Yk(D5ZKNQsY!8!BP;dxv&sCKo%c2mjX} zr8K&1#f{;O&CJl2l;4!@92^{g;l~v$zFoa;3@rEAD!&Xf^ZqwT`Ozk|Lpz2WhN@+A z$M9aivuHW8mAq!IF3$&<}GlmZ?SPx6K(8mQXEFijw55GL?$+99I zY5(#VNbZ6k#sxKqZJdnS$}ZG?a|QT!@dGy#6UI&CCn~}xz1T!%mWNf{6XOYPbcWK7 z#3nz`6#Y4QmNLjaPEJ58*zFdjrLo%Y76Fn19|#8rhr7?_|Gwn!PAKw0L_|XKBPT_B z`*SCWN*UK@Sv^R+IitXHeApf}#%ga`ailTbIeQw{8DvXJG@80`bO!T!SFmHRV2XXb zATRGblm+f}ubZSWIWPuI6V!@WzQzA8IHL!#?J6rP3%=CL>j;om>KhrI0(v}Eo%wU# zm4Lel0A}P8x|_DC`D?B95Dz1+5afr6h@^VrU~}x_nYZRN>yiL95HmBlnT>ksMMXvB z)VfEFB%dV)X%wb1RBUjDn+z`G!TP&%Gjx$W)R7H6FIHT9h$+!AE^0m zX@iOS84w_zFm^GY0)H@SB%8Z3d}fp*6a69p%=cZbiL642Rb5@ZY#ix=KRy7%uiI?j zzMEx?ekN0Aqkx}_SCUuE7 zY1B1SIeL114;Qik;bzYj>x$Q>+YdbNzdqZ9c_rKyGJUV$X&Vj%g&C3cvo#1mFuvp6 zQ=X9lNQ?&t1^{bCP+(w7d;8^`t!lgK{x{1KgP$m>EiB$N*SPy-Jo+3p+W>hM@yt6t z@37~C7Eha;DvxY1*7R94ldpHtplq14~2 z`n(eK>pM7_hK42*?e7mNA2~5%Tawb!3F0ZR%up`)Lf{`0#>;5b)9GivJ9Zaa1Yzanm5^v29CY89YDBnrUh-rC#7^MH@0_bJ zeAq~KYb(xc3A%EirYR5EbDRn>J^^5XQrmJa>$X?ItwsRNQCV4eJbGV%E{4a z#w0AJez-)l-VYx~OgeYvX5wBJ%Z1ZJ=&uBaIs7CglGyb7-P1A@P0ddDD9ZJk>Dek(44 zCj{_F)_4H7_*zA!HMG`iECA)+R$pITG3>1xJWofOi9bMlG?=zA?^dK~Lip$BB0&NMOGh!sg)h!`}4ARrscKT%!edQ0w9wud0!PMTRoQzw&+YAbZc{e)HzdR4o~y z6y5p9`wGf0<-<L-?(Sbws>o>(jO$ezY+bT|8_Lj-OKr9IzYpAs?;!f##MamKACo<+y)j zAb?6dZslm*;%^T&TGLf+NR9S)6HKFp0XZ zi_$wLH%-8u`m%daCIN;#p-`2$)8TnU&}rVqO!RKT>QOIt{(4-=d!8Q&tlHdC2Wk2F z;qwdSQ0*#DMDYTdhXs|_=;)?Zu=b`OeH|j#otD&eM__poOW3cUoX##TNjiWXNI{JPPuRe77>*^>w

mY6B6d z8_+e?5K3fzv4LntZ-#a+xfjRAU5Zzw@W{jARxZ^HvdDn8EUA!3|DnQAv>Vy4(HX9K zhKH}GXo)wN2qB;TCCONp*WNHb%F&y+*ZZsH|HIx}fYq^dX`{G%aCZ&1ad!)DAtY#m zdvJG8aCZw3Jh;2N27aOb5tE*P6cfG5M zk$mBcDWas>w5XF~q%#;C{jH)Es6X`8=-{exb!5J1L3`2p(PXoY4OT962~_n|L_Keg zM&a`SL!wKNDr}MvOG9;{EoPUQ81t;^;CC8uxXE|K`1%zEl5i8!5hRjkese0ubll`+ zbqo#2gY9Fr{`mB0Xw-fyYGRCgJhUFcP-s2W@s2cP+(Aq5N{*rktbl;dk-V+>w>q^- zC`{?Z$rNiA%nll)Db+7Vk3Mi9WA-qsFec+!Ern+WX{k!qLgU-x%UYSjEThoCK#O2I z1hH}Ay@+^!)Q}=TPvvk(8D@IfNLLt&g}6x9igbWlFP51r3}>I|AQY&toG}20?=lS@ z4wa&uo^+IpB(>oX|W&jkIMmNsOhv_+p7q}qSj&%i>7^oXEA#fmcE&D_r-tehvE_J2NI|vk1&$$(ja9(KBupzIGk~FU zL*G@*KUKyo>kDW=S$;G|46?o``uin<=-VtYcdu^{~gxso^v3O7uW z=r&Xo4bAE>h=CDOuy4XWDVj*gjH}M7TbU-?Ai!9b{n1@$#Wp*>`=ab&frZtKTlc97 z*ByXL*HJ5p<43n*${b=H8-8_7SB41*T&AI^^91Y4sI*95S{){@X_F8wCHBwtTY@3l z0@`B-y^n2R_H;VzxgCrD;=4J8T4r*J~xZ-WM;zGeE-XDum*(g#IAlCZX? zg`M2HFHCjS(;2HV*9N>A8}vfxav9T-tcM$Y$h+cE2=`(p;iT|2=w#9xZNP@Y*zo(F zEO!)tfqb&SurS`UV~)Sr7^!~OtSczAhZ#NucJL|sg574pVu+&yvP*HGm4=@+gcpXt zGezF&UU71E*m*|Xfu6PCOC!3?CxMbCmbugbp5uh}`aN~N-EE!5#zM>RlaMd&;8@tJ zw{VQzJK#@%hhMxW$^ zFFJhSg}Gr|y9RUSr$-{r5AJhXFu6&#-S-lhESt+Oqcu+z5#8o`k}FtpQwEGVY$n^2 z&ob!><%I&}u0Mrvo8%ywN*OXAP`B*IJvc9Wyj|W08;F-a+$fibIn^bwnHWgseLJ`R zvEGMI42hPBs_67Ri`zFrf{8XkF|H49&l>{I&XmY&)R#2r_+Jg!m#q8IXOoz!_q@cJ zE`mhnX)(>L|GI?gqCcX9%Q_FA5Ij72a@*w+uv?<&8QOw2gGDzw4?3fB!jS zW%_t6<6YE8$G||2wfADK(4ybkSA^K@hdRM7uSUJh-Hhu>vhN8!WkRZQdA`S)f61-Q z&1%Xkc6~p Hz!qujA))!{HDt@iDv1z-i7J}{ihvC42(E1BK4aw2Z%qn#X%77t3h z;LYAQL0Pf)n^^(l@9qlZbE>8=2j0kE?9WoU7+f^zFP56myVsSnvhh!h9)Edj_QkED z1mo2h!DT=DyR8K5ozDdfc>9ORxOnkt0A9`bIW6ruHUXYFHt#nMFJGqerV<_=9-8DA zGzsvGT{xzjPmjbNv}jlLMif&;xv8#qwg5)P*@4~^0X}vPwz@jjcN~_SMM+&DonN!J zV>){c>B`4fefahf1&_GB5gfwKeMr~&2ClT(qkBw;mjvZ!DbW2+cpM+j~5nTo7GdR`Z-(+^%{D z)-JzqDIDrpc7IbCR`4*CpbKYj_9xZ}Ia3`x`^q(~4tZ7EGB!E$Z9?H9y(+&hKQkx4 zp)S9$u%hO>y_UuK;7ngxY8SVTlta&=rJ$nvOC@dPh$NTY55odCYf&Cor{nVcH>cXo zw<{+l&G#!am5eOK9w|{a<@xz$bvZfp`GEPOdm8ZI8wxRPx2tJJ_akJ>=DW$8!@I#@ z_vmAGHjdpK{VG`pSz2wZ*;ctE`j zTew|LYrOIa6S!Zu^tcIYi97&#D2GBPay#u`e7H|r^f;tShriT*`1+>#YEXj6{n7?_ zIok&|@Zd1_vk%Aux3feKm-`M2?z=u0i+A4--I1PehwgfK-Qm?q>_a}`1^Hx!*_~>1EA<3NUVejBsrkyRhXWUL=uB_8VF*MxU*_d z*)d-F>r6i|W;BQ(^G zFgn~0Wf_zediokntG8MHP9Q#r@W$r#xfqpx_Q8=V zS75Z`nk|}IJtL@jO0g{^GsqnIg+`7*;I}-9An5|!kh!)Xr$otl(V#I-+2=1aAs~!b zWNGA7Zb^c8YCyt2`RZedRVa&oL~GFn2w9g~dy%JqH37rlz@Z00&=DTX6RFuO^s`L~ z1zB3GBCk7z@C=V(+8d!rezwu(P+bh7pkF7>LVpb=7>2{#hALy2*o7Z;JSN$&3ae0R zK%5v4(V*s6LZLyLkM_P8Buv$NVaguz1FUZVY zNh1U@is`Lgu~!#kAO;J{qrYf~W+7(kYLXgUHH%rPrBdCo=YNjzfZ<0!hFyo6G0Y0y zVMIF`6~`EfpxZlkP-o|0KiMP0TRd$h(>e2-WM%Ik<)1#Dfdpx2MuNFdh>N-&Jvv&8 za`k=J&p*BV@#+bk{)r{>C-H)f`7ehf=MQJO9upiV3kSm^)q{zc{*O(1psfU4+U>{R zcjmw~;SAYD0mPz~a8K0n6PN1m7#{!t=U+8DCToVbnzS>ah#p=C^HBy6^E9pzBeaq( ziHs{%6A??BN+?Lbr6;<*h*60WMyA6ySOC0UurIS=2lJpRarwyf+7Je-IZ_O ziTzvbGZEBh$B~i8$E5l$MbhpLfCP_=!cS_M6FJH06FrcH?VB;)$O(NX;5jaqOizgF zCsx!SUCbl4@)zOk4+7dBv^t?j*4Gcus+hT@iSfT6KYy|2fKL(FMg5@F0nrKIv-;CD z3*>421w;MCefzQA;(z2H2d?z>*fd#PTWe$B>W4s188d*D>+#EA4U_6yAe_Z4*sRC(*z!n2t&_A5lKvvTqYX5i}|NHsBLju4j27Lbi z2G0P=lYhKE|JVbht{EE`=mS^Qd|dVv$d6<+{NMloD}(>lf&V!j0NMkOOExk-cH@tW z4F6bd82HxxKt6$;?H`@~qy6zmr~fBil>H~V=-*ij%q+iH!Lq}AXdT2b{>ux>R-lHS zokRyw(^91_5A3wUds^)m=(^EJF!|w9@Su6rftWSas4J3Q9=O^!eQ6Xd!}u4~d#)wL zTSgP?3B9=z#q}At#+}n90ji1ZWag#D5{TThG`dvKhO-9m-Ug*rNPHJ&yPRgX)_&u0 z=juDPy>nAv}^ zpF-;qJD3neTx2sK!Q!vGZt#(4TyLtWc)UKSI1@_-k3d;G?}8rqNRohX@7W>!5Ye)O z1h=b?+S@y?ZI;tXSmx9Ttw|2ckMLU4==ys)zkV3C%6!crOOXA>j6&Ai%IwNJVhwFq zWM`%FC20?P2-*+-dh;BQH})GSH!IgqMyF%4tcrBxJQK{^4SJoYCRos-6L96PmG%2s z$K4R|ilmL?ke*M9HzHVJp^OiVcC9xy3A0&_V6jQO;K(E|i27Eg z=yR%FuF3XyGl$&j7Z-@+EzKunkFF@I2>iUs?R-x$Bmv_a#u%#62KCU#MUnlfZcdD5 z#5JYa0mUm>^KDw$V7Zd^AI!a%lwgbI;fS^(OLBv%8(xYN;$~)bZ_nznrx6H_ z>x)1lhxxKs8Gdwv(rx`rAT{o^$2I!Cp^-b6f0JYb=2a;%6wjBUk4K#Qeqq2YgHxj( zLb+eJ0OEt65h4qHMpFFZdEq6B{IN=|iXFdH30ey7V7JMjYnj`?1vDmf89x)om7Qn5 zrlq03osM?{+nvCgb=*{-TF|~jDVRWlraUk{84KV#J5SA$+2&y%#tP85g@y!5vi1crSLn@l zCp$-Jegvo6QKgL3NB3g$>(omz{|veN$y+BBWUW)BjNwi)Z!MPVY4VL)I5ID>g=C74 zAdt|^3#p8~iK=*aofj^q=Z5+n`4P79TK)oSD>z@6-LwaWJigg)Na{Kz?#!v;s)!Sd zOpiu&<8M`dx(U-GLkk2`;mxCm8}+8MImgAQ8QW0&%JmiPg&&-2vGJ~v3N-(|6a?sp z}V3mIr#fh++}`Jqe?oA3gZ@yPs-IX`OJci3Z;+v2W&yYl4YZOTT|*o08{2T#Eu3Xt$9bQgoAy! zFDV*RQ0_l}qWEZ)M{`5T;}TZTbJpN)Vi7&lFJ~aWjcL|1BfRK`&))pCfCsCaRkbb! zoN`*tDryY>lHa$Q)@?t7J8)Bq9;=FR&c9o~vm+Op-KL2#ZTI2q@EVdka`w#=+VfMO z%HMUBoWHEJ6Hw*5|G#yz(AbGR020o zoGxY~C4t} z`)PmxPJ~1HVOxM5`C)1sJVc@B)xPozr0x4DZa?AisMPRq9YmAh2{zA9Z3-C9f`TV& zk?3(l5+Xsren%e4Zy7_meB&?;6L(@k?K= zsUmH?{%2pUeT2n5EG;`oTKmB6N^S^H)dImBVWrRL!DmYD4tdKT{uO%rvc)tQDe}m! zRtNXP-ul2ta1#FXIPu7^3qPhiKLbqF4yeo#I;3O#Y6m1SeGMlq;xSS`y{1BCD=Gb9 zueI_a3Cit!($P@Ga;$QFN_c_6@cf<^a}i{wF_yDaY;7TnS)*5iF0#%xDf&?%==jW}tv z#@*+r&Hg@26BOJ{V~`e?CuC3o15<$0(i?+hSu0jdkQc0>Fuh0>wy=z3p)e@ISb1I@ z!AnwOhiNcIk3e5Ra*O>Ov0+Y%4mq~B*Cc_k2+#Jwbya<|#79OJdSYn$QV_1}{Rin0 zj(XI2;SXEEm89?GOZ<_8PCrj{q#A{e&*hvURX*HTUk2>W89Kn;sr7oRbAW`diLln) zpnuDp^P7oND3a%%qd3T7yLpv zC_=C~Zw@^(D{uvR768yWK@2qKfI*@_6UZD6m}Cd|ZT92)u?P!r`|;S%+mFYM;0&HH z0XcrtDE{@;RPC=v^khN-AGy!@4i>SO924kZa6Gww12vGe2DGnz^;BZ7!u8+xUPcr>_L(c!;7Nj#?COPZo~^38=aBJjy&|uFqN%@WIs-UohM9AL zV?gCa95r6Imp5+a3l>*M_49Y9LstLq6OyEC){_NmiiR2at-z{ovV9B zJ_(qmkOuEH-Z0xZRRyi$HK-;Ao_EIR%W8XW23&Ye+DVBPS+Z-=jQ(%_r29Q)=4o~; zgqB!xn$sORDZosIr0Idf{q6qI9ot&WlJrH(BAnz?U+oN0=-j@42~9pfCreAs4VT#5 zVtHog%9w1nG^1%z*wW6!Jri2T%Uve_{oBl?zNm$?#Iqx&zH^oxoEcw}l);SYD(6Cg zMXF|!#_JdOImldnuWAVr3oxyDz@K-6FB~4)1~hvP+?CuwNv$^BE%bi0q%ugmM11he z^)CBYu>x~D{gzn|3^xB+1H_c1tviVkei&&udaH|0TDjw$yLZ)WP{%KOx*`f;P}Fx3 z@%Q21eT1rEudvj>=CizK$Z=}gy+sodjydwGOAnqO8sOBQD_h!C>O@oxam#gWVL@Ym zL2;Jt*{>HYiA|OfIsY1et0h9|Bw9!<)r7KVHHJJKO@<(snTm-E?3 z;p8mQX-@)xt^6u+D8;x$BD6!XU7^^B2KaON07pAlw-rD>p)Kd2<4q!{m2$UuNwCiH zMd+&AT`}=TdG^{c8wy?IDpcg{JpzR>qVwv^*UWn@%j6LHfJjS+_kWJ42#$bQ_S(6_^q*wfC5NLe9Tw3%CaVeM>Dx)j3agq_qoyZ^R9pYQYT=DPEOm0S+z7oDgL`7d__L%tCRjyn2=`Ah^bqMH@V;-}h3 zdwoo{of9t9WSmSCqgkn=?rE_o@l|}nXyToVM0hefjc#8T=q2{eO3&z_^Pb)mwtZlZ zUwEjtVHi{o>2Vv@0pUw9c|G?soGq=MF|InFrt;x$R$DvFownxF;0pa90C#lcWHen~ zRc$O?RWK__4bp0KVt3LMB`o|D9Ho-lGKzo^-D4>vI!cILGotNHyHooL`e4^y<M8bPKOuog;uz=M&;u@b!w-wbG#<~;3-{ai?Q4Ekd+mE1Gm#+cD@Pj0#4Vvag||%}8{PD^oErbR(IZSIjc~%;y|!nDWgz!V=I$ zZN0}(qGQWb3iXU$Y(O#pdVdjCAr^!@M_+5IlYxr-<@{!+1F)?m@AY zR(>^&F@!8J&I}-iqN_PnM1;R}3AGPbfh#!G45ZJz-|AqNdez9+2u{v?_AT+!a}aue z^K5wcV%NhoTE*&#m*h8XegM}mGe*sbev5Wu6tN3e$bMT?9D(D==h8u@(psk(b$1|m zT{KD|sFd&zZqV}4FEl-em~3=6&|(H{-c@Xl)+gz~ry|c#L!a2%pgAI|nZHW5%Fb?< z*k$M*Due0V2e@G4vB*3h<_hCy;&G||KBz9s$6LBJNMkjlakWuk#%y6ZdEWxlWz!n$ zO^5wGCvK?8p6t6(j5(g4(|#Pi$vrJU7Cf)|YJ6Qpl=rkfnucLXcn;%V&>T zPBJNhp2Hzsz^ht{}DdLpe!z@Ob^UqXlJHtt?dA$1!!AZ**G&lGH{r*C6t6jwH<&t9sdTm zdNh;%0bDV20+FD909VXRtpA2w0eim3c0M|pn18Y#|7zV&==|f(e+90XesG>189a}} z+9PoF%N`)E@bAD;tUxU7FE|RoO3cayghaVmAB{jRHs;>}q&Ody7w8QA73L%6{F4*$ z4?qe4Y|)R_{pv1!Z0|pRm|1|B*gx<5&-`Wvu>4Wi<4Hgh^$)T9-4&RbS^le40@Hl{ zaVqdx{{bBSToE%X%cFdL{rq8S|GMx0{a?&X9FOzifB*Aj+y4FH|Ft8`%s({Y@nmKI z;9mvwxSN^nzk__S{5O#>Aeria4np{k;2EHH{A=Yb98c{0kFNC3$APcgzh3#D3;n920&y&l6xcsDfv+?B5Ax#UZUFHQ{N_gyj>pWtf0O~f8ytTQTZTZj<@j@~ zG6ZVvk3RFUJn%%0$ARO=HZYm+p8*zzz{mK*m+`nC_*6LlQ7`c3fV|p2$^-A~#{~1S zj5rtZj{)Krh>-I)J(d5rK!lt>*)4zPP+{ZvWtu0ZqF#*0jBt~tdDb~PXXK#yXL3oN)9GbdCNB+2(w3Ps++^=TzLg*EBN_INM`~CqDMz% zHoIr&F0c66^H!e0ZqA?%a?wJ1*WKHjAIxc`+4beRg{yvUw822J^eOd1!Ak_mZ5~$8 z{+_GTZIfAa;tD+oPi8+fy&jE>i2l(_m|1NDOc+b}AOaey; zdZG3+INKb@H9u`B*BjI$RgtN@7mTvk8cqesP$4%6eFvl;C-Yv3+Ze*pPA*JCheo{G z_Y1XjT+BjoA{n_955p6iZKn=XRQe=^A6COen}~lb1Ecv;mZU%Nvu{BBR9h`KmQk#< zq@`>KL&|)TS0$Knh`U~or%%A3UdOkQclzx413q_>s75-i$1UGi<12j;W(ff1^{W_u ziKJA1r?$>#eH2m9DVW$hwV}K7l8Oz|QioLy<|ig4Ty=`g0J8ilAth2ZD+p1wXIIS( zFQ7#pR-(mw4>t`O=j?)}mSCT&a>UoUMvf?F`DQvFP-#>ZNG40uHDaqqn!&p`pmstO zh$KuEnv~Np?0t~dRucgsyL!HrOsUujl>{2!v>;(F|54XPK+Ft(S2xhC{rL%HeZAu9 zdyOJ#9h8%u?6BCw38j)tOS{fj1=b7t%(FK(F>5Ud71%fGl14VTNw&=x`7A50&Ec^t z-~CFe(Z#IwLry3aEtUh>)3;IztM7_$`8`q>hXtyWA>^Jg?SFD`{+$xCa{cOkRhF{u zV1jA5!EkM1U?*`L{-nf3{?H5+z9(fJ&x)3wWBe=#42-!|Dj&{QnK%oXTLuMtc{6@3 zZe3f2vz=jQX$>j|!on4i^Xu`29mLH#X(S&wUXT!{RvD79K-j^uuQTJcLRtK{{w4!PtkPP|kq9dZ(M_AK01vmzMte2PY9HB`ajIcmy> z5it7fsZ3XV&wzlW*(taGZgV|Jbs$a{MT)1tT{lHCAp})dx+T|)%j2|k20&XyyF_i#9$Imki! z?lbkqfDHTNG+ooFF!(;Sv~EUZ=+&7g)aExm)2tl7xB?#$ehLzpxha|kPsYpMOsVB4M$aoWoq@hpnivajeWK89reIo$Q-1Lr03gm?G| znD*Sd3;;LBF+WLkOu;|H&g4R_sH?g!KWAx-Txb3R)4TjDs6&ZcL0z*$nNYNSS^jSh z?|Nr%bVH+T(S$kleS|FVDYR$83-c2`M(b9v=OshUb5LD?y@R`-xxp7k}QV>?pei~VAhx0 zzux4viqq-Lo~;XpZR$+{h`7qhn6`k7s$g5~>lFkBj8VOBBL1ew`eH^D*}&X%Ck|{! zHo5}F22iS_lTxRR8~#~6@A|WW!!#X-{%z$O6|fnYD1Tw^X|RK!7siF?!75?i)o=>B zVdbA1In8YsiYMo)u$4dE>E-Ng4#E+=x76-!7POaS8X8`?yLGweUqne6mw7@<9>@9L ziUavYOH@^)%jSMyiyAG;w|+w`c`BGr7mHBgYYByOktnRP{i2zkOAs7+v?!4v&u%mO z6}(X08Oov9H|a!uJ+U>m^{wa{7?GVK>g8)#OqiNJWm&8v;80qH!MSUb?XA;AqS(*{ zrXiL#b%RDkTi~X02)}J@Mr3a84Hrm%)z5#298e;C-6CHUgw&~jk{m3{S}vRRfu{2r zFIhFO6-U~{l};RYKfzIx!FU+DZ&wK90HG8NpI?X1LR{p%1LZt)-xeIWBYFW%N@|ot zSxP-r!pk$5MU5bFOC4!7*?AxNq|_jd@22`(oA}yUXcggT_JDvEmasQH05yYQ*bnR& zfbE)0wQpl2lMTTuV-mdEj7iU(^r~Z6)Mq|@5Zq>Z9!5XhSRxQtiH37yv;AE*pCfu* z-DFT&9CiUwEh5_pBO{+75Vokt@k}Xo9k+_yX_8lkPxfLgvDH7ijn$TS=1l)$HC&FT zhV@X1Y_T2gHWQ84-Z2U>iS1UNj9LD?#GpTyzI`t!w!R5}Z)T%EX~{f%0C#;}zfV&9 zozYQ-dAyNx!+^@>w4XU$fZl8AlK!bO#4?g|o5XBPq7UESIpDn9F8K0EKC*MS%Q(pO!2B(gWw=77d*cE1JSx`vD{)at;3p&G}6PhmGwQ+elSKDimlN zHC)hLda-w;xQ0OsAq_p0kW^MM^J7y4nU;RzB-iyMnd96MAoE0V|E?sI4*I|#>!E&E z7M8Qxc_t$0tgFrQigNB&$x)l3`@Boz5HuA-(~1Dnd*`e5j704sh5&btke*C|{U$S6 zo)B8hQ3%G4TlTk#;&4{mNz(AH`urq4O~5B*f_L1t=mVa^7(UHb6+)P&W}jgX7A0kP zB2Ak^_n>-Hp+vL;JT0d-#)H5HXrJXr$0;U%rYogbwBC$`w<~L73$zEW z6(Q`NW+!EHd~A1(Zi{8o*#1lnweR3yis>AEn0kw7OTy^P4HQqfqxwdqVXPD2^7LoVjJ0^jKcD))L$YTtY|USD))#}`98 zs1mlfOpy`^?NHQVAtt1^pAtC=dEMM@l-M+u-}~q05Swn%ahc#_sHFs0d?LJz){U~q zTt1+o7s!g8#Ia68cVmzwqszhVy&PI|WwYoK^9FeE6Qxk5*e*J;s zpiI>#)vjv=F=C3OMntjU>y5^e=Bcz@0hjmJ&;C{6xE`G?ztL3zSbpiMG$W*~MM+@9 zHjBLxPwB4uo$KgggvuU_AR#Ux1o=&{Gi7GdK0ia;svCEWh)it7da ziQiU+;p$dW?fr9SEk(VAeS^-E}rs;YDu9y83`FpaI(`=GGP zL?24^Q zf9K>?gwrOON$HhUaM{(4)}hp8NH5#VNKh#KLpe7r;)draul>7A)A2Db&c%^W5Ot67 zJs8Mth?1;?+=+E0n%xLLSJ5hv?~-qR0n}=eXHr|_Z*LS_1-;J-gv|wOi+1VL&}$2V zD&HP|CC%>+=uVv3a$|OUx5BvC1Iaec8Gt%O@Eq(a5qyRJn_ul2cTk@d8&*-_q z##k!jA9}9qcyN^_5qxx|DLTScGc*<`s^{t*4EEC%O+J513c^ldSYgM&o31H7^WHLs zn1~KZbj>el_e_ob{v11oc3yDWQXkSxx0IEXKl3AxzhNnxGeSdfbQg(Z4#P(RFd<=Z zmypoeTkcKF*Rk)jQDUhaq)ze2O0H9e*9fCZ`N z9VOP`3Kg8r{-imGm!5!th6U=Yp(r1xh(wa8d4cVYoWwa7oicPaR;52`kc`~pq_i+~ zX!_pHYt>Enj6EN`D+ha474*5RTUAb|vqc9wRONLWFPFtow*Fku^F6r5Pfi3~?eAH3 zwkt^Q^hLzRs5bY@-qGr=<3-jHTSIwQIZT5j(CK;MpBfx z&2z~IYA^w7@tyz1{lZPQ5wc1n7ZzyNd~`Q?$Za^wL5we;0gADX&)BP9Sz`voo?n-t zTq;3Bw>VWd^VS#AVMVN_5(o417Zvwb)6a#IW^E%p+v}K!=Bj1JG}VD*98vzMn%e$| z`SVlX_d8rfc~I-!s=(<7;k&8SC9&Z1W(r=za+_;2Z=?5@O?+CmVC$`5A|MtWr;ztb`dFOvIwfxzV!!as^BSf1u> zY4tE%9G^kAhO=g%DFH^2ErgW0Uba|ibyE16Q~xtq!v_wlp(y=9DZkFnyr8THtv4~9 z^&GOaFGNbR$kG`QR_!4*hJ^wbBtZ{Y#fBRtZxz^1iXC;DSD76NxW5G;hONh`iD+IN zonA6^FD@g0WKa=!LIS_(>tbR4g*>OK^v0rt7~ysky$J->U1z{aN%hX?@Zk+!`vK(` zB@0wofUX}d>*pN-^n(^oFP>Jc*cUq}%O$UxIaAj@J14LJbjJFDR`twRFaPTs2G*H8 zWebD!JWoJeWKZV(Q6my9yYcro;agr}9N%$?*|8kr)Toic@LJiR@*!Ad(*(=TKZ6c| z#u&RDDyb8}dmEpO5YpC;r!Xu|zpnpunsKtX8=-btloD2jg;w_|1r}8k;~3U!tUvWj zEVhj|`TX+YdagoJDqP03D#|eLeQ~(IVRtmuNqLfi*g$=4h+bkZaQYyu zWz2ZD|ND|R%DC%y2YJHy1w^SGce#s#4z2H*ocWVIlE$~n1w>cf)l7~PKNRt4m^a~5 zh1&4qE<($meOzX~O;N3T!_@=`?P%^7fEtN?V)_Dv^?qw~1A;L>$6?5R_`SY~`-%^2RA9R-OUil;~92MnqyDr*kEepvGC6COCmhp@LDGtF8| z1SL5xGpG2>xL-ywxY*$~3d5sK)rv?2DOa~_g!`4Oe}yw(&%PfAm`*URFtTcOF+_Jd zxe_lL;SI&lUdf{hg8e56 z5*T>+pNE~f{`ANHF6{hYLofel&jMyf{0pc4pRMZYs{>*0zaU~@YaV6#&!1n){B;l* z!0t@!zZz(9+q5Byw+_0OyPyzlAlpCb>rxLE%?nDajnt^fW0 zdjJ=}`p=Nx|DPlV;Cu?T1#tc@>IvZbUF;hm^nWsl;qjRQM1F1oK!p7_k=-BXiZcHv zO8s;!oWLKwS7qF!~3k`-u2HD*X>Y^v4gN4siZCRvA7%dd`1f z){jpYn3wqv#Q5<6a{dE8ew5`8C(e%x07VH*c>QNFprn9#m;d|$ykV|?K-Z6L{gM0m z$2sD{#6K*)UqI&{c@2KU!|{I$=*;z#Oa3WB1M}l?ph5d5p#hk*`cFc`j}gNh4)DW< zF#GZSZzKlbv7fj9eL@59>HVA0^mh|GR<2(xQlMKma_tA&cZX#Cq7=};-Lgl z(pu~$vw~P1%}gZ$9EvmqPw4%U9ua5Lcj2{)TaC5YO^38p3o>9fSHZ)qL0h@)y zL<=LU73i;~v`i9`Le&R+(J!d;T*6XlvsW4f(_c!>uoyxT4CK$N+xr$lWPU@1Wp-Rd zQEtH~&)AoG6f?q;a4L81;+|$NlY*tcJbxXA08_@E&NI}iTv6*zVGGbtk#>- zx3qmW=pavU-INGX1#sd*0Bh-BGv5X-^GdrDd@ ztN1d3`7+`MCL??J%mME08(4R>j2vwUA>f)7Pg?XlT38Qb6cAHeg{uu?TGj(wC}s0i zUY3JFl+Uq6o*}63PSS6*4vM{s(ta)DSLy0wNKN!vH}}$dGa683(mwrWY9Mr8fAmoI zYf1H+Jr%Kh*7FYC%OI`;XWb(X8qS&a{ytf{pltK4R}8f(uh+#x?7TN{*`2%Ia`Vh_ zWL^&iDSyJ-m_t?zov3SA(NwtPWntOSAUQb|Q#6I?JH9XQ-kepcHfSrlYQ^yAy10af z*VUVSN`$}ZtY!UGgsMRL29RS5WMymUXx#daI3+uuVfNltgTl`CJ?Et-PlQSw;UUIu z4Pa{WHEV&;wq;e-@l9(-e`fpglIc|UyQ0somCYrBZ>w`;LdcSl>xXre1L zBs<&hQSE%!Dz12gJK;N-Z9Wgto9K77AuRgIUiP|7bGu-ac!v^tOqJ$YUpOC39(Ig= z(IKLL);*H&O+D3K0kht-mlsc1nZ}kN-_4{fIIx%et3WNU5n~JMhTlGEkE8xhaa{aG zYO-49fg9dod9SkEJ~w7tyf!I?FTEypCA!<5(byrbbrhm~p5p~`T(ezY`p$N^^?=$9?WKD8Wsz6j2s@eGP1 z^jiX#ocP(Zp{gtuxypo4e}i%DsX;FG-bubLXJh2~xCjlQnFqRs{6V(_QJCK#q zdnph)tn$6jP#-J-QO(=U4h$-s1HK#=-nin9#F(j0;@Y<#saO{2 z-0=f$#e>oihlUEyEsl9U@P}Vlh8EQiEfHf2Cwr7gqb{nlH5Or>;J?GK`T!|ycW#pg zE%A9!+8?VksFVd>F9XadmYTYW!FLI-!0&bhEXWHdF(>&w=BvqbX1SVm0ZNp;rbX$U zett1iNyTsjgJ20|C%$7>n5E(6_-$y2TS}L{OFof`&n0Va=kB4# zL2F=GepsMxc(#i3Zr!Y@F$*>OU4^2vex4VufYe+0F8Uy21J%8OcbIP=(_4#&i*&b+ z=fm4Cn;MY}pF3}uBri&{4M`jKkM8-PcV47ys*Q`cliv}-)`}Fe@^8r9c=#LzN8i@o zgN`_Di#?@Ezv-)G`zKE&a7h2egwSvT=K&&IK;Ik?6vQ=g`!EyvT*Qv(GpmtQ_E?DI zSh}4VmG_Xp=iIB(yVmw^_`)|Hmv3HNs*k**Kter&e-r0>EcmJ5X3=cZ7cpR4e_&6R z>Oy)};e3;;{(9IAp$(qSIJkL-5~~E_P+;dBRw#=NrCrN>FV3JDQ=*9n%h$v#;* zw_Zb{O_?5@*)n$Wn@@ynO3_TZrTbG;ne>Q#;k2a^pN^av}2J|C4K>~C_%dqge=1J(K~WBMv$IlR3xL%vqm3BWq0dl zEk`?)4u&05`UKL{%C(5M`DWaZE<%&TP@F~60=GdHYO@gJ=`Rxrap-t~7j8_q%0RNLoH; z=ifH%8SnVqK?-n>SfA3SN8iP7nA-qWz|S3%tfEvTFdPloF}V^ml;bW$<>hh7JUqWHk#G~iwhTxuUNWkCDe_A`36aWlYluWbz_^WkKh zqS+X5;<2a-FIi2{BI}$5po1d4M&pq38X2F^6qMmP979pS$Kp%^yo7QPmtcd1s&o?4 z(AT=Dfi^mDp_{9M#dDSAej|k6XM9$`jzhyMq`ZM#;1`v`Mw-xHj%%Lv;X_+(%w=vC zqQXYV*lF~vKC`gK?({X*%=ol4k3nO>VsLy-IOirbqL3v}@Y43t=We;CNnh^GqZ~c(yz(Z@!v+K2H99@l z@x-9b`XCT~gf-?eeO|VLi#G)is>TXR&=Vey8$^$&`;)2Ym@nxo zqVkctD9wb~UGK)G0|Aw7C5(FZ2K{i{47>3Xyr6c?Z>e1R?6N9IDS;=sGvEBy6{%gH zf+KXbD7$tzNFm!I@^$z~+jm{P>V_spn;j0D-W^&~Eo*6;Tw33Ucy-?>nQy%p#CinI zwIIHfk^A{2hl-Ze#>AJkb9AkZTdAtg_$X%h60scpAd;f;fEjiZ?6E!-j&wIUZ>1Q8 z^~=tE$T2O`efK^%Bo45rK20hTE%Bn|s~8duuO~_EtBG}W<)!Pd?aQMtC$kD=;q9w6 z79y$}LEltgQO}xBZ_0RxYS49&wo2iYdg9}^22WVGr)NvPJ8i>!(Ko42j#v%5y1_E4jsK9@M3L0o?UzCtQh#w;4sCOQm93=Km~q@ZWq zWU`EE6+W`<_IT%w643+hiT3fy)#k~?CWl2h&l40t<{t|&{Z?=BD+f?fDioaL$JmpO zs>OV`ZNwU|_AvD=$0Zs8T1CHa9kLx3JbYP@5)1=U*iq-1SUPA4ubeWHRi;mi?*m@6RAk?rL)Z{(|EylP`~WwlgkO>_&l-b0US znmc09;su32Kddi65G`nGofiF$tK0lBTGS?ikl>55)q0u!U`4O03z)PKZ1;MDu_p@U zsXmwB&@t%y9vF>a#(~mVLy?=XYN&O1i*__uLBO3fOHtJXh}(QQV-trY?=ni5R`0qN zhqWb0=v*!KWMo>>J{m`eni{A|31Ug)P?r2q&T7g{d$GG2HL4YUBCEvEK zvk|bPjfo%NWn@@tE2hPdiud(F(tVal_(@oMY#=Iny99B4ymSLDpc_dPeyQQ)lgPFS z|K;8*Z-b_SDBkV_hpNLuMIhytpvg#gHG0QMPsQf|oqtiwo9S7LH9?wl`=a+px4Pz= zM1?p56 z$JE%%n((1^W&`S=#V$2X49xCZP--l*Up85AZJ|q(p4XL4jD+4{BC8h^*Ww57bvbYn zNWdS^p$^H?^F;%p3GY@mljcq80-^(_k7ioG2%g2!yB;SZA z`(7H=jv|IFOK2@F97j~&f@B|3^FGmN=HK)O08@qj+-TX5R$y)n1n`FhQg~uExpCGT z;tufhhcPIOqvPJHy)R2`v<*^uZC*od_2F;7ae%U)X6}S=gs_*!`Gxkdda5MR`{b^3 zaha>#)toCDpOa#~oh$M`C)&_jxv?4(LSADcg?_5Bzd7>;u>CUKl2z1qLUEwj~&}r zCJd=xuquk7xi4Y#TIZ?G4I}i|@{I9RN3e&}TaaD`Su;>MdSE%KWT^SRmRP|lVDtgz zSq`1(;6C*K1|Lx>P^10LqV4{)txx*fixT&cthhTv?^Akuwd7)r8Y}w7@I*Z%US+-N zM7}PQS%6c|%3VHW)^O)WBK5sr9v(l3NA=d|M#Q2-DR<2)cL(M_v$23on zBPqZXfsyx^G;`h9(2WnYMeo0idyu#W4%S+sW1>UWbNM(Z5O;Ibo(-7h2(qbX(eK#^ zse|pm)52@~Ea3dAZvZp&wL7|s8yg%I!6}GU4Wa8(P5jN-5YUbKvs!A74gw)}1dt_{ z)VA&e1ymzr9#~+|Y7FO|#5)&|#CV1=7)2Q91$Q}bZe!??&5kNGs=OVWq8OjGd8AAs z=#;Us6;7F##B<+^S*2ORU(`^*d5l*3Q>e`SKkU5)P#(?JE*jh=NN@`lg1Zyko!}0^ zEx1E)2pS0P?(XgmL4vykcXv21W_ITh#PodS-gsW_7P;J!>Gn zy=h{;)c@gv4ujK{55=jab9XoY|vFJZY9W#{VWdhnW!6c6p7C!50Q zpz)N$K{GA6cf8CEHd;mUpm-yBiI$mGS&R_o07ZW-JA;8MX%x0g@#+BWl~ic+Z|eJ} zuh{>D5uWB3BRs%s?%%h;15Cq!B@V#g@b4Mn8J;%ge{ZAx-G6DB7#PR;a3uHvkWk9G6+KPK9LRnotG!@s}jkF%^#=A<7IEyELW z^bhg-k@c@YpR7-YkYCUJkXRWXW2yciA;$mj&=Lbew*CjqeE-UDM^F1ZW9yIHk8Ds*0^XDTyoxp$Ls-N%h|7Dt#QP6P5Fq`qWW(5G|0s{E*qLqlb1B_^*dY|Upu?TdX^{0l@ z!cGl&`rsjnfUp4Q+faDZLxI8wVDj5af-*6xIBoyEB=Qf&7r3!L;w8B)BmToXc7A53 zb)y*mYEfibq*Oy^$D)$JM}1ta<51YD2i!v|Y9%V3G&=^8Glr4Nf2XiJDSoK8LFtsNs6 z#S#ZYb+O$-u}^aXyOoy%h+#Hlj+8CM9PCip97de2Q%sH2b<#?l1>5XfYk%d$QDw{SV!K5w+1-xcf+*YJQ*{Z0lAMiGp{5Zt?gDPwV^=trwQjI?2B&fZjQZF%j3NYmpzZStU6y*`{$S#Dms6gm8or+!Rs9G~eQaNLj%W!7}rJ%c2YHoAaT@ z5ui)IYO9uK5lnrn#zPt}gIG-3`=CEZEz4$VQnk@au4t=*P&LLrcdlAMu8FDueOwY>Gx;b1?Z$#lpGSchGnm|>!WJ=)sPjbV-Y&4_115C zq+;>HFFJ|M1EOoXq74qn9N825~L_ zD(%zK?nweX6+nXZm-+*^GeCM$jeb#h0Q%Y=84LffQFxv(c7HGtGW=@&l$RAL18{Kz z2v(c8WyNt>q}*)JRxa+U;e0zJ6=E(B!x6)!J<_BlKQlq=Wb#(tE{#A!i(J{;_~uV% z-($Z$v8)QbBdjegjmPxMx>Gl3+aBJ_^>XP>xmcwnELOVP=c2_~9Dug3hcy zAgT$WJmXAAj0^L2*ZgB@ZsoXl1l8#T-0m~ANYBTgGieBuL~L|Wd6urd$rApyK$Ts8 z^+A%^jxvAli^g1g&VIUQQ_jNk&mwvf^phrwJe8d{YaeE~#7p~-yiP~*@c0-C%aAiY zn#*SjGeb|{6SI#BcgztAZ5N5S^s)+2Lo#PqB2w!@n}r4VZqENkn&HDc3Af+Er;gz*`XB%_&Yl!-VbBl!@tG5rje>OKftZ;Li=4bknm3IFYN zhF2-DwkQ*uNi#-|W46fX7bK%4X{|Tx#nKzYmhGVq!vjHz7bBk)kqW<>5b?Z$1QEo3 zw-O58Yh#d7Vyl@XN_&+v;?oRj;y3^KYT%UsYx%deGJ6oK6Kg4K{qz;m*~_Bxtc;D# z`u)hjP<6Hfl)dM_nab(@aR2aE8-aWf4>W)aTj1i6DxNJp>mndVVBS4m z6twVu_2`l(#Cy4>)ISA-V6_#$Xv=~ocrL#>JeGp%O~|O}P2lnbP&N)*+*!A6)si=a zQ#l&v@5=Ruc6o+hDQVRoft&cSPc$*8D#PbVaRA`v&_gjLl(=n$6q#@)|I46Pv|9L6 zHI{j3eeZ8uVMeSr9(+;+u2hx;DF^%^w#EG+kd_Hf^CD|fUcfpUx#gy(VAXv=+lYqR zK0WsJ;4qIrAzpR$S&3MW^@Ss>d~tDJ9{M4i%>Lb#z1_g*?ijR>I+!*IVeF*|L49!o zjv-zxNJ5~oNalo)=akrTox*61sjZ68z%b>};Vbv4+W?V%lL8$Q4F@ijZK()bEG8m{ z^b6va!W3scBr{Uc)(ckFPZeAhw(m|X$()t;XYj|0z9v53SF6Yqe3=-4qArz(@3i~Y z+Zf}k{{3?hIp@ikJ~pfCV2n3Yj>EXV69(ww^0(X;XC+DJ9Q6bs{L z*FWDpH|fN;%|wVg)zkgFJgSJU>@w&HV4yBfu*`zz8iKezfw$o+cVeynTGma%(amrI z$M~fLV???SG|~;kaL>B&!##|P`a=;QFh`PG|8J;2zwhJy!JNcQ^NVu!tBZH>5{Fx4 zU)v+_a+u|)ZM@AT?nTds54!MvmLU0XAIL!TZd)=Vz>hDjb8o~}R~^+zT*IPeTsr)W zyuZ5iI%rB>i&`tat@eYzK(+xfBJZ%mhAFa5rlJaZLde{dU)2PLR)ihuft%kpBWb_@GIMjY74d*zaFGN zAQacHH|yNL0EZ^C^Ot&1F|#c(3;57VZbxZM+fFiEy8V`~+*i`@vHKyp1e_- z*|3)BsWhM}Tk7Ra(ai5FwKC$2fZxi>&1_=AN|Fu!EMG36e?U?~v}U-#Mn8xmx+1%& zCg5KqAaUCC_I5hCqM){1@7sFCH#Pf^fn!R}*UW@4nUdfcwgs#nBT#}txg2L+&Ks4P z4`gLS)_Rd%1kAd+un3uQy=LcgO6GMZ`}0d%W26_il>KYUqd+S zSCwc?d@#KnAUz8zys%BU6N}grdTG!Q17bhDo<2 zy*%QseXw%@@b-qmOOhG?-7NU%lkf*)fu819jE$^_IUpoc{RZkiH>^qYBE7%}-^RnF zYzVSA2&g`VY+44QSk=hO8Iimh|8T5IYBnoK-~-*4Ofv^;QW#)7X%9-27JU%>f4ijA;0g*&mAq7^@n+3bi;c%&jAZBYgF_A(7rp z#vme0p5L-p_b7L{5Yq@8XhV${AErgDYrC34sXC~;Y@LaKusH$4hDmS7e|dnV`sI?C z_N6UKU6w-o-3QxyY&E02;0xa`H5f|j%TM5S6Wh<@}No8ul6EF3!;oyqz{Rb=Yn z^!ga3pX?2CtEJ>RHV}sk?ARz3^|MvhQlM)@w2S>WR3Q6xz$V*Xy++d5dH1O?FD4R* z9^AsV=`gA7teK;662B?*jcBvm@2ose6sUht?~Dw;;yeIsFmnKmAporK0nQTjED7Ed zo8+N6E2k4K!vkEDAzJ4X(uuHf$J~}aJxDl_<#nfGNjUml<2CT~CDbkWRy){rO2@;5 zO9I#Ap##dBEcV&cP2M?uV~La&G;I%ZYwM+;Jimh(N5Vj^W@?U21Km(L>{1UW`xq|P z{?;YEt=$Mn=2FKmTt={%pRncwN+Mr%4@4-_282cK;aXj9lFVM2UYdCX29-xHpevqmx1^G&p1 zE@dvU8vVnAmIB1`kq(u!aQ>1$^*hcv-c`z46zX)CT*>i3G?uAROl%O&oaV+(XNOZwZngY(a_N88Hk&tnQ=(aMI z25|N{Gdi38n@AoF8S9E#?$jzK)inw~14ecFW_5Tk$BNu`UvN0mu_LzJ75`urx?o2T z-vQw1<=0htuZWBKDG`lj*EIs1r>Da450<}#QBI+KkX(>z);msGR{Dg zc_t88!DxI%w7qfW`R8fSL-2x+f_^ZQFz=Cc_L9jADsyxZtS3)+sMM&Z+(x(n1TYt8 z2(*|db-x?lKP{yHcGv0G(fz1=(ZGTpI0|s#GsKewKRn;!d2nYWd*v{rZLj13&g_d} zG3vZA+}h?B#%@(ZHb!3@nQ2(&e1opgc{`Edc~2Q!bb+%aVgDaer3XW_xD+=g>4{oozU zS}rYMfh$8ps2#9}jjeFxv;nw1ooyh`mzAXpL`#6lQ#vc02hUWFt`50T@IZ|&%RH&* z%=O#=-)9=qvz1vLMig%m71Nw5u*PTlUrvXUUF)hP^#_xHzbfR!J$vx)9RDitdJh=g zDgGPZC>+aOsx)&Z{q=mo>$K^WgbY-O{E33X`OYx8@kRt(*yKXgBW(5}f$p^NO;@NL z%R+Q>?E!_ahGBA2F>5cE=lX2o3qa5&a1$taF9^PIpiD31fA&3YZD8jqgWwKPUsm6~hS|8E z{op-wrBRa<_Mv-97#jqfHwdd!2mdA9=n)Jx9}dy#!5Sp>7rcp)>~kJX8SV{8KTG-s zn}%Ytsd0$FIgd)ym+ao;dPJxbsY1RL56;eb2S*k#Zb_{U*M^tJ(Vv||xwq(8yC--d zdUS|gB(zji<3)+KY6Z8mx)9&0RLrL>2F=A^kkH3iiqARau}1vg_}DgBItIKzCBf??II-Hk{T2P85o zIiRWv^N1e#2DZtCp(`#um`sxecZeQ-1W~gcpM71}8K)I=YhzKSzP<85y}&ofUK2Qx zDqpxNZc9GX*pjw2iX_hvg!JiChQfT>MxSp>q#n)WOsZXuIEyIftsqRva|K$v6vx zaX)p~UZw#Mm52BZ{QCJ4StL_UKjAYevGdnG=FA*%pCw`p59~D43xrZ z?*7(7&vnejF!cHw_}u=;^{)1j9&Tw==k7OC^%I=n4>W@RUlaS!YGO~s{C`mIj7-14 z?g0A$e`#XZ08Q+9^o0%LH=3&l+m9+iA}%zdNYO8qkxKb@f)ATTFSd{gt479<#Ojk~PMIH65>pMW!p=2gEm-?L73PULUzjF>(rVF`3wz z*Oa{bc$oB9I{ZnhgvVvC&(R8B)Ay-awHAv3hp}X+OwmR@yvVE6%0!c+rP*JDmB+5B z5B^MYo>g$tDj_HV6w;$^i=`wsyyKCY0{VV?Tw@LOnWKvz@n`C6e!MCy7ALr4y94Va zz9CrJFZ3Os8n#m2nP)Y$Y#f`vk(vt;MWj&)8<$ zx}lQjm?#098U)3pI(?o6PSSfRFDp~e>0-*h+6JIocz<|vMRuc)p(-NI)axYQF`-#j z!SKNjMt~FYD-Sn;^Yelk*cGK&kiJnujv}T(g9Gcw5x=;9a6|CB0sn^^W6UhSKq%Ga z#jJ=~A?KRqHi6fc5ZFRVN%TjoAI!YC$3xCnFd`9OMt~AnQYbC&@RTa~SDHMD~66b0?{*url%_VP{I z)lB;=#bDt_%iQxYZtUb*`D8TEC&x&Wx`o6Ket%HD%D3-prt}#nqkr{%-~y^$2n>|e9%TkwXLtr}xEz+8_M*z?3xd1x3`~A^xd}yo~2hQf^m%KRT{Q{50Ph&&62ShZtcbR7r)9K_jnUUv=OdB zGpDU{+85w@nQp9(25_NWLrJq=)Wl@cgrnQk2Fm%8Iolb2q9rv{-rkSrL}wrF6o&qh z#r|TOjeKW$D;L6bM?!}_Tj#Z~QYm3k z6@7nA?Lhk-Lb#IW1jSVZSGo^?U=hUuFcyr2xrB+4#&Z0f@q?GH6aJ zNkyoVkgaTX4V3eKXFE|W_)Ejh4wHuDY3DlH>*$EX54$7_Y)wkZ<0-hyj&aRz9$fG5 zZowIBU4FxR`JK$>4`%dVP3`JIv;b5(EQoz`8{RAa5aHd2&!Yr)4=VBSKH_Yaye0cH zDDOGBWk+73IPnJ24-)PYT8qSCPGh?hIHPuSt#@jhZD8~+o`kDXIRa6xp~wGj#Q&i~ z6U(ph1|K&biM~@zbK63uwK-mQc2F$LxwGF=6fQ7KL5qYBe+U+%l^TL&g_o#9V|b2JC!gP&CEI~{odj|!8>ik1S>f$06*chktLOaO_UlaJ zR=YN!*GkC72oxj!(y3e|2+gtZs`JY&IU*%pM>!u18`#eF=>#c9US$fMs;UfypLz#_ z;T|PuUEk$ic%g7wd8Yo#k9(Nh5fs$Z z!h;8o8my|WQzY9QOj17Hz-f|+SG?6isoRCf$w@*cn$xh$!kgXid1NMqGlF^f`IUG? zI9}-afIWJwJQ{CNz`>a!Gq^Lot-+}`yd}4e#Dx)InL52JtSNPeJg;?Xdxo5)5_9Hw9dP??mDlJW$z)R?~VJK7?0HdGHV<({;J!%K z6v~36tq5o1h3))#DyG2s6H-`B_G;dR$Y%+b~#t(gT|Sk#oUxi+P7W%X@q2q_M9(EBc21sg{)e8 z6U67^3+XMC9$sJ(y@dF3Ujf9oH9{pdzZ++Nx~WO`3)n_NRwU#{1c2x9v~E(>g4UY= zmF^k4=msK?M_Qgg1~BlIr(_;<7bqR%!kCS*H>CR@I{9_QvJ9Ue?O~b2i^H&wB(Rbx zP{mnIQ~^RB=;S&Oj7@?K)P3gQk*JQ*&kxWE`hyG?7WEu~uxz@7IlX*F$mQT&qPOr% z>+^fJifjyzbB5o^L8=eUWmsNOkrbt)1QsVY<-}01j7>BM!CSY{GGEBPm`hJ01P%pC zj5(h$lm3>3i3`Fm5~ITyecpu=){>_vkL11`@J7NChmqF6Axux{<fv zJjP-GY%jaCV1QP&9vEeRZ9jjQ1eRpl5qm~RfHKtEkr9aLbT9^&0dg7)!bSM*n*H6< z7)# zU1N0)nNwSvtXXZW%!;rM!}>1@(5mY@NN4bX`cLlpNT%fO7E*z#ppSQ_@uL_*5#ZP^ z_64`(;<8zNiw|v;tXO(8J{-r5jhUY0wqN%YYjLqRn{fD#-)h%R4BEd@hQm z#>zxFa$kUUO_dJppwpX2TmG=Ev$$Sa6EDw*>Sa^Jv4TVHiJ&W(%&7Ts6`ioA|SyEo)+Sp^DMzie5(agZd*3)(MEqD;xECr-+etUcT~nVw^LfA|d2 zA3fYOsy-uKO?(Qu6Yz{_#a)1;Nh42H!@?4RgBY_#q)TOkz#2ob_s-EiMp$lO5-YUd z?BifjAU@5o=rdF*kjS)4S4_*^lzd$p&sO2xaw1#dQHgY~ce|!8OzStFOI`+l-V7Xg zS+;&+ZmKjBeCmALLH9m)pe$+34=;)bOlnfz%S9+b6pC9`Ko1X9$iWkf{D}44rtNjC zy{e?C>O><6^jKu98>8V^Pnxmpeq>8}f?N@nCk+R8CtpW&G=k@{mf%Sl%EP;@qfi+V zMNQ7|=R4K9g}bymXU`|j&mIejjLUtqr;G z{>2W&6+*7%+Kf;iopiE#=V%y3EpWDfgH^Nw%Au^0q0~w1_))2%Bf4z#8V^;LlD;HD zvlA!rV%c~Fnd4W=E7QyQQx_bS9|0|*j2N4GJ}9de{JcGM(GY(<3+D}%J40*ushYKr+Q{6!f?Q0 zQkL+8RfmErPl;`end1vhp6Pd?yv6Jdg!ai~7`Lz;cnAJV^MzF7wh!$vQ70m6b@zSC zz2;fhi$fOR_h_GgHy8c1;r|y;*UyMzmZuO}j}R$JrpEwW06I`gMgSuHG4wb9DFsL~ z0HTjG1AJAUlBVC2OiWCV@y8!C{FHpm`>!I9e~)AS*Ye;;Ieu~jWqd;N(ETJS72<&;c>f|3MZ82nzO(^pD*Cx+p)vy?#)a{Ztf& zr;zIm04g#%0K}difI6cCu*(4|1n@vQKs-e=Xj(u`J*EJK061X*vOU!XU@P&je9ls>V6gt-d*vIo_`(r)vzykr{K6}Q-H4E{kkwhWnU+^O zv$l6UEWYLvoU+lxASOcC(=(p(*u$Pyn#dAKl1Y4eldw^0c1_Eo-ifF-WK%|(S%Y;! z)!TWUme?H8@KI2?lloIES)(AAW8tyD2sdkYuap9b>rDOKvs_-v>)&)TzzhG8g@KOt z7c?_tnAoG|FW&_#7@B_vX{`52MPA+3T{T!lK^JDrc|W?icw0oB1!=hm-4>+;qZ`6C zV`3byqIj=TPT<%4Sj;m5OWK?_^-XOFgu-%dA>wZgRCQvw)Tdv$)@NB0@ifHks>|Z$ zQqnd@zs#TWPClmg5bw$H$jp(qS7s<|BTbNc5#ID{cW2oPGQi421XaTv&89p3nF#`? zPH^D%r(nwJ6JD+jfwM~J@pK?MIqb2|+=G;Fi^QZeuu4Yp(&)ql5lr>y)f7}~h=Fcf zZCH`7zuuQNsQykP0QBZRsvv;3-Oq4u#!#Ne3IchAdl#VKLoIWv%5$1NxEF#95@V88 zl{#C@)sSnJdJcl`Y~LbngVWuIi%U86bX<-ydFWUjQoC&Or14-Ct5ZCX&9Z#URTkeWa%^@MPUL9@HXDoGelaJKJ9|4xjA= zd0U^rDZ`jq%%F0xq7nbZ`s=i#?rFSRj4a3Rte;Q*f`76R@Y9$B5UdRVye(*8`9~Jy z96W?sXGIRVAZ5JoR83JvITI!E(jXLlU!jey!=``{xOn1sb*f#aPEp#g)lz^M!JYe4 zFyY)Rk5>`iyOvG)Jq%oC#8Wu|0gYgi{I0Y9;W~xo7aS7jKs^*-qr!VxL(UM$OEMg9 zhSVG7%e~nydi@Q&8@zF_PihxbxEIhjo>!VFvebM`d?NK>fujr$K3z~J$5~x0OZ|g zM5N5Z4sATld63}_8(~6z4_t?v&X`I=h~c5qhbmpto?~6}?IZ}iB6+aWhP+_A;Y$1L z51PvgST972Ova@qE)^w=l$Sa?htGz;Wf?1DTjRPoSxnY@P|MD1Ec<{RNP6WD22(ec zwas?U&)^xhoT`-&En~h;-m0vy&;#K>*XvhvcArNOD|QrA1BX!yu@j!pQQ$KW11n-+ z)+$AW3LV<;_856^SxzFF6m^Xb>C|55^YQ0jx#GumiXvZOJhpu2L3@1rO?ZGM!IEKh zJcyZofyfrl*u0atU zAl6(WyRwspX}N2hC|*gqkHXn%8C}yW_jqD*_8YfNT|#tJ(28%d92y8`Ro*UN!0e*s z|Bhqrrw{o504g8wG5Z;o59nwA1=r-KXwv}v^}h$p{}nF(_Y#1$`tc*m`sDToz=8w% zIUT^2?XTd|0L|pFBmesQaqclb^;7!)^$)-x`Nzp$ul>(UOaM*m@$bivmidWi_J{b- z$M1UDKmYf?B7fJkeq8ye?EIzh{3G?_+<(719w(sxlmqjhx)1!j`4|Dt0^eOJ7y

txz+COnVWdzX5|8*C-M^|7*x~F^5{cz@Gd~$1Mr2BC%Mu6T3 z$o1P;)c@|g{GZOx2>28M-sP8I)IZ9^2nY=Pzjs;rk^AQ(BS5?VuU+}`UH+44M%I7j zQq0Kn)S5g$*svLS9s_eT^8B5<4kOP~KjZn)&;FAo{kwZH^8G%r^CN5XcOT@(u>lAi z{}1VLmi^(a%t#CHC4Pz>@aSmsI99$xyuV8TC!8mDs_zoOBl!t>`6L0x2klenh3^u; zCFcp0_FV$p^9io>T>{+m383*^0=W4+!3MrdfO`U#hkun5kn6hv>ggOH7cKpx)#ph9 z^hsL!N1gAx!~l?fcuqg|Nm{_?;IDIlenw0GGsx z#eQ4|Xk*%^CD8Yr0OzD9egC@zc!wvA_`3wC7lwb7g%9v_hNrUp;*Rtb+u@g`GT_+& zng|xa2i3^bM$ZbLTF_M6Mvq@l*W#TXH1%IvBA^KLzbvoj8;l&VJI7zm%`3@0`Y*wPb$dDfUNgoV(sEK+sh#_!Q>-~TZ7AUorE`G-{F=&GK4w^rq zE=^a=2M|zLJ4n?JB}9mR{bEW;s>bfw&P2-ZBMxqkIENaCtn2IZB$KW4w#RbivL(-Y zy57UKJA{?en7+>u<2XLtQh{wJ2dbZrKFlbkGbL{5UcN(Gbf`Lu$Y$kkw`ir|#fEh# zLl>dwps@ko4D{NP)*&KMgF83?ay5FT0hu*7f1r!*4BZ~Z;Byz?0-zys=aoA{SLlL< z;BcD|yHR+SShR=*4tg=^jnJ;ZJaXrQJnb_6jkwwO0&aK%VU;Y|?@W3;`2$|hRDd^W zvi?bbCwkR7dP6k{u=3Cfp5`0qgW(6y?uaD*rMsbvq%N9qPHA^#w#Z(M8t{7H_Ayv@ zCx)>5mD-KeCd^A#G1?9`FhWAwpwD49DS~3T{KdLFz!ki2OZpL`1rRBA*`rx=j&<+Q zmUJfN&MwsxK<``iVcjp<>Qkl$zhTrd`+k~W@_Y+*oz*Se0ypUcBc7HUF$E*e_F)lP zFRWEfN^S6c)V|0rMhY_QBGEmt8{s`m3xbwhm_>I}OaF-VrOJm8UUkxZxDwdjXToFG>(Y*1K_G97^H@!Zi>=73$Z zO7fvzL6KM7BJH4PX|@&l-7xLCQGn4+#=u&e(`^Pw}x)JV|>} z7dgSs)Dx!zreJWO(FYgrldf48f>ttjyv8Ylg9S+MzP4bHcIb13QT{ls0iKrm_HW3U z34`q#yc^sH)kr8sdbuNlDW=+RTJ|~@JcFny7_efgxSO0lW&{?m=cj;b6eE~ZIfuE@ z;naB5eCPQxx6>_Xx%kU?7))mi`AEpkNkjb1uWbQgn9Uym@nO#Q`oL0eb%L99L;>b zcXqnToRqr6{EVmz6&;_R{Q;)i!cJlZ%}!jWkJyiv%D2fLHLM@BurSa67{3WaqYvyu zO$A&EG*3Pzk&J5MUeQEiA-nB;V&V2gNjHKOJuxCMySh4!CxHRzv9`f%tJ`E6E6tMC zNTcHDUP+9dU0sULrZ|jD7MP(HW=tNa?}V3O?X;04?p&6dO^N1~%Gkt29-G6!E{B77 zZO-5taM3oaNa`G>QQW6m@OMQ`D9X^nOuA**XYESr%lVfsU9vD;*L(3C0D=66v1iK zTARnWw2k2^#5CZ!&_SqPgLbuP3uv1*+#`M=uJ%ekV6(g~fLu-Fa=tDo30dqqFkG$n zQJ#7WP8oOYKhvIj-;I{OD_=4N$#jizMC%MxF$PI8cf|rJpoN;a6j4$n0(*e;@x2>+ z^5rGxx#yN@0E+KwJ@wQlFU}Bo?RZf}LSRoz8v!aeD@H#+w-5H}QFX!wU(HpPHOv3@7z=Z(;|GJeUn4eoMV?Qk%5f>7Gl z%y!>X%Z%&UXU`kBSAs{?MRAv3(uqS9Z)&XJkBMemGM$mo{h&O)aLq|!O6_sf2i4G! zX^DZLUgphgtFygZs(Y)F3%SEaet*0hO%2`3{NCZ);$^UGogqqnlr48RXXDgN|54KZ z+Ft)uLQ=nFK+L%G(E8ieOZ20|v8m?`x!uK0X0xb6*?dEe3vJ|T_f7N=@YoJ7G_4&i z50)n4*FK^NtVkuzxloYb#7xWtqj5bebcHX?1pihzJ1gCkzw43LxSLt8f~V9_?TX;6 z+0K{$VoW=ysaB7*7>rU?MYGBVwFd?`nG2@PLx0E(5;%Fy_594BVJL&Q0n8%Dppsg( zDJ>hUV+Tx`{U{0PkTUi8MU`_-vm5HQ>#Iww1CUS-s||Jgy}FHw9W|kLA5vS3m2bg@ zTOT*}FXuI*HLc3BorfeQ_nlK>dQ6pTkB=rMs@*Er+?*8eh|Nd~4rn#fO`0-WyjwF$ zH9Wu&hzAZ=wMtF#U1mKuu^xyQggB*0CoXat$5?FH_d*kDJmk5lX(*Z9`c({6Un^6Z z!6MEkx<^Z1Mk73*#RV>cFY(m;K#8QKY=7Qg0*|fxi6YJGoh5!LyKuPtghyX(*kOp( z+YnoB7Vo|_^p)LCgfy(a9y%(&L2nqncZ!Z+2YcleS@ldVEVfk&Ds*uBi-z?}pOYLB zFD#1mLf<2XSZr%5g^Y9W(tDI5YVedu6XyrDuWR@%3cqL8j(A9v=r>o!{&`mk1B*%`6@MO6$Y7>Ois));Co;xR>L(uFUjV=qvRd#MTg#E7* zLf_aeSCdj}#oyK7D9TDnL*&RIBy?BSEZ<&XPYcXTnxz+I?tgH5@6Spb1(otq8HSJk zg>Oq4ONCw}?QCarH3A!FU{|(ZKzz1PKz5eZw^)$3$1SIyKq}0ocyCOz?n3VCtaPaD zK%y(7C00yiU?5ag6`=0LV4V^zVRe>G^Etzk`J-iqmPd09-jkhSS2*2ogFq-v((GWW zaQ0TzRW}FE%5;GVb!mY{mF6r)@R)Z9pcEE5D(I)1!Y|te}W+ykNP@YPlwN$R4 zg?rxv_Kwh=wKic^EC&i}d5Nw6mj4sQ`|8i~$dCq>T1%jQ`YJroQ;7*{bGE{M45n}! z(BJSAO-Z|3gHvDjS!1@|ZWFnv$@*5WV!Pc0QzOY;JQ7c%x@10$*`{!oP^5Rq~C!r6|ssr`C ztjS77;yWqca)FFkYk-GjCL*k^RBHmyf_ju6#u1K9-sBYHl4{0Mkv4IW63u3F2{l+B zeDJoVXP3rcdK+Gnum#@dh@?P+B&pL8q?T~d*LfFhH8Q&7G7RG{>o#IH)6>aCaS3-m7tftTpRw+-;#`q!-3E+F83ALg zdyrf3TPGK+N;s!%#Yyz?q@9v4_arXV2wueM{p1_G!$KePuP>FvVl$GMhI2>lz5?QA zgS6F%vWp5~HO7{(X$M_)WY@df3`vYVyPslBNTEu2IIVs+dD>rnFl9Llg4b~NB{>T( zgYyRT)B)P5z>AY@W)ULfMPxZUBFrZoiWlMK%1R(QjJuTii>kJKV1eJLU+Jb>b#%W_ zOh4AA4W!Paw#Y@H(k5c#3G9fb!)UZK95K#3<*awLb{Ic>v9AI?tD~#VuHyAI{1_v3 z+S&{MURzW}(_!`b>Wjs%)Jr$bUDI!3-PRISEf$<%j%-}FfnEopxs@4R3my;PX*S+L zF2~*P&g>M`T6R(IXzwd%z1eLp$P3RY+B8(2X`>`$S;G;FuIlM0SBWY+^cC81pQwlq zee>}ysIpoY!F{nW>iA=3Aj{OTz^Jhdr%;`E4U#Vi`?a4IW6*5FX4@70LJC7j?J`Fj zv0=9KmsS=QKW=Q`YSVk8E&*DaNuY$q7|^sesTm&#v|^Pkj?z=9CvX6 z$!uHddB-cWQXzk^Ym}7)P;*Bx*cfd7D$cP`Sb^c8h3S)j;m3p4kp%g& z7trX=XalRRG@;n0mhO!8-%ut}UzpsdmRbi zy!ol9)xtToEUQw>{@bkaYj<+_egu9(2$VeA4!zAUxqTg3>t|R@1r~q^u1!hM?x&|+ zXFC&x&9}-bNMu24l40J#aHqv>?2w=Ypja<~bx5qVUV^g(8%g-) z@ocPn#QT|EjN6hECurYJzJQ`5d%_41nOYWX3|-)GzJI2$2OpDfH}PV9$5PUX<1e~zeJ+O^i37sqSP++qNe4d=Uwnk{5kW1rc$F(SH>39fpWja zfi_8fcD+64LVJueSz4xPw)C{6VuR@#+06v2O0Q2hqff?q7n)Gsxy9Ugx2UH zz{jrXc|KRNT9?RPJZss03gKDr)qK}aN_}}z7@I&;=k~C!Y9QHsNAjtfEjME9A>&?@ za|gXH;J(F2cjyBLPRf;jLB6~8T2Y=ZhpFO8DOmk;3;Ssqw#)p&j;U>*_f2uZcMfCG z$wy7simi(UxXL)!c*?nC+msC;2Fm+%TjsN;{oSFrIwy&AMh2t{ev|F<_PI+&({&db zj#qbQ(O;dWfvv_og&V>(gbUo3_qVU-=Um5yj_PFyVRR7SnyYxlc6^c!Eq1^rjEvSr z>&Jl;o@dw)@$C2ZGTz)$yBu#>fY{40GVe~6noNe^FsI0QuOu5-U|KEh9Dze(OtR&C zTx`BN-=eo@WF<$q%Pa%>_UZFWK9(`sPXs{Dr#e&hX!ahQ<;$Q_LO!;qGB|ym>kpA3ppzQ|du6ed61$9qLqFO;mJsp(Y5-;JEO zj%s=pWjNqy1YF3u&&9iLYK6yAD@~GfOW7(h8wU6(S|OAk%}>pb@2;-#<3PZp?B>ON zbXwSgBh6w;K&0c8X?u#c}o_<9>;#80DK3$vCbiZ0-UdUL8P0M;g%~m1!evxN? zBEP6(av3`zu(-V5B5{2FrJ%j%eO8&VH$g&UynDs*zEy&j?sXoWoljkohW$Xj5>f#KeYbl=OG6bY>>1~iVs|cA&U&}&`@yCQqe55k zJ2Tx$?o&k{j3!sN&R7zckj#5JVD7tk>1hx`oWp!*f5hJO;8m~59@13jGocTxBIzMP z(SBd$!p=tn_kT}Qk$C8(B?=hP&v(p(5ocMG&Pqt8de?>nuzt_{z)ZZT|J zpe_yIR&zJ@G)j&)=4`s>UKyMhTI?Crw)+_|-)%JCGSwhF++L4r*xgBdC7oVF=7Zm6 z9?LGVO|)6k95gjJjqZ50>B=tL(GAXnkO1v{G_tUruGh`FX3Er6xR%J(no!8&{grxD zpLq9RNt+{~+oDtDNTCT4c?BscY%%m~6AnL)4r_Wqy^WewRe~Nh|QsO+j*tYi|$v?8lgU2 z$aa%vUAQkg&w@}R#*-fQ8@!AZD9CRr?>diM?Izzk%k=Z(n1*|s(uLIMQ$ z;O_1&!QDMT(8huV*FbQ0cXto&?jGDVI0Scio6O9anKPMl=R4QVz2E)yAKg{ey=&L* zRkfeB_FB(VK0X~4@Ar`5I0*}!*_xG0dvm|yaG7h0YxOl&XX38M+Ou(hUw#cx%I^|o1D+pLpfbCc*(tzR&9>58&)RO|3{4*^+0 zpkGNPOD~Pw$8~uN$V4f8-=FB8ZA8vgU+H4(NIE9=PFh3SoNPL#p+8g53p&;UzeM=u z)MOFC_5DfVK;jzo8%h zi@BLKz5yUx3JC(mb~LpQx=I%ZqY#xB~-yxRKfe9P9i;rqPN zK&N#~mDmpq4MJqjdM4Os(cd4ek9z=hDR@dCcj{m_Ho#<~IDG;ZPNXa^azOiV8V^7# zot!AkU3VeMU2kAxF5B{JF0tNV<8`$`#g^CZFU}Cp6j&rb;`Hp|SL6(ce^rU=S&e$< zqr{+9B|1l~;WKhy(waM>3lqfX^VtEa*$ehiZQ;RJn0y%~){6y5K>G!+%C zqkTN6)cy1g=mNo{F1k(Vj;?^uGj%tov+n(rv^{t^h9y>i(!qyEAD&$bij`4ClQNG_ zJ4v6=6#dx(b^6hL0#OXhtca3PC3b@wP2HG5kcwkBd!@6-+KC8N2YWo`Z*QRe!YAUr=CGy))|K$8j z)hy8ODVb;fOhrCVzN5`0J-H zFr<9c=`w6v7LBqZILWtA1G57i9NylBT5&BN_pGn?klPHB+wBGFPY7Uf(;fqm`>_YL zB4g$pUXCY+ncrQSjk&opOy{1?Gu=$1LRMJcNP!oLV_2ZdlX@V@E&?$kRD;+IHDi<$Y>ylU#3e+!(&iF z@~?Z8fu~?GDsOw?l=`AuiNcEwL38a&y~@BBeU*yGLF4DRa?BsVFAkyG9EJyG)&1NZ zE)+r+fscyBuWMBdQr8&oO+&dPyu2zrCQ_%BhbkZZrPqrOrFgK8(29v!RhYP*q%U9f zu6uZaM`5F(5P5*`5xkH=lNS&3gFvL`BOn*eYG*tRe>Ow}x$co==oOF2%Y|+bkcK0v zz<`cQB=WLPQalU`lpiD|3vUxC3(-T-zyMXG`$gs}kU@X&B2Agyp5o*}> zDNullPkpa;z&8X(oMROvQp~Q`a93Z-Jf4usG}j#uYX%f6Jjz`ySsRuBW{>Xrnnsqc zJ?kH}4^*0km$Hgm&~H6VoNB**3v_F2I30St5wM%T4~c#JxXjwTozb{m$$sg1&?DVQ zc=N!`V8V7gh4h6M@R7{rRHVo4JTbM|*{yoVe%-Al$G2X9X_=3o zD~buP8`o9bq+CPdQ6F}KDS4L*>v=z~4&^%25JOtrG0a(o9*|`+i}(9tQz?uv&fUXW*JG=S zpY``b6CTu?>h4@es_b1|w$BI$MsN%szuBELn12`}ws5)W?(a~?p=mhGhvLpQN{+tr>U`RXzvj5VQ+aSBm zX!>np?}jqFqVeah#YoryXXcM)OQtHDN&@8evGdAw!P(e{s-t8~f&igh!HFHaE8#(W zHF5MEIp?Vhv?OxJ1=Ky8*@NBk@LC79u$aB#2+N68WLplsoyHDosXA{G*M;y8l#t~J zRkA6U{Z{m+VUi0qQ^mI3oFWUuWjtiV60R7I{W05eLPR==5|jbgmE5nA6%J}7oSd*b zKm~RiDcDv}F5(!~JPnrsR*2^HeAq5kKQW)590AVYGk>T8hLX2!L9=O%Y&^=>A~}1mxV^(eOvumyDB*BPg8-P>>|~nx zF!Ff#K2N*C$qeb&)F0eF4AKNNM9Rx(?6Xpw&{y>x$#P=Zm9h~Z*cu=339&@R##xES z(v?rKj5DH&1&Lx2RLxpk&L_{AwwaV&z(SnzsPN;S6`ttz)pDRJVoYOXm)ppFm7wtH zA;xf{GQ$24*hHvT;NE+1Y~)O3EVXc;B4Jxnsf9Dqpj$$tq!?dwN%BQG{_{-a80CT| zYH{C6f9?Xs`l0t~a17a43eYQWlGOBOB5mP_ zIbq(V6PpIV4nnVLp(A2Vkd)g?Q;Xk~7nDcUl0-x%zr&AK%4Xfud+9ljGO2p&L@Xa} zqdK)Im*@g!CXF&NZ%Yu*Y%oTmzfMxll&)N$yXGR!ql$$D7DZlHV6=lXNPh52u6G|> z9ss_P{?4BaTZJN%y_h_j6~_D4ln!?;!%W*!buE4T6#^ioB1$ntG$fXp()fk&pg5WcXV{jA}t*p#eW4Q<#?mz5N=Ry)MnP(Fa0ji@Vh-8PN*gkDnj1WmF z^9BuxE_bz#uahF6B9F)_a2%ZxdEuhSL^J|>)bU){!m2YK9*h7dQQZus%h?C%x~gNh zXfz_M(6`8yp=q4K9M)IgQ-CIv5C6D+O~;~sI?9%)7*>lvN_uvITn0ZCJtFH1j(_Ef zrG8Jv2e&sU*|sQ9##Er@N^NW;l5ttm7A%K0XGHrujcnRSQgwnCe$441H^fsqhWtcT zoD;M7?|F!D1A=duSG|UeFTj(o`C^Bb56H!{G#|p$H?UG92tR0Ag3*`@5BkWd7j$uhbauypECile;aYcM!mv+A}1wLe9LnhH(-l(C9d( zZn~t!hyYa$pJ~$PaJQ8>sWX)UqRA@GRl1Qfy10^lYtosj`O0LUj}bn&D25|lBox>4 zw?>|;Gnt4@lxRUoaAF4S=<-#yF<=FDRup*k0b((9`)iq0HV0YtD5rE@7QAi&Odq$M;;K0vPLC~Bl)DvS9R5rhvElw)vp z>4f%2Nn8sWJ4@;+#sxBzyUJ>YJubr9X$_TSq4 z5ZeAF6USm{5i1HEkXoD%Cd;=>` z-{T-dlrG#psQ!$iw7URW9PyJj6_!|z6BbVuZ*df6@z2G!E-Gxrk1 z>PaS4ZUS7#{l@iR8<0UhxM*YqZ7RwqcggPCIz^@X*{~VNT{k$p-i!guwFdls0Rkks zlgNX_$tH1x(abs4d7F^g6VaHmH_$YN^^|0L6@>(@O&OwG1%a=82Q`~<;>lH*dfHuA za76~?bV`-YPZ~NnTB;?OwP81-I;0cj%!h)-+uQI378r{La=1w9Mrk5^VC)j*wyUSW&AueIwcZ`S0=U1?s3g^!z>?rp08w19*Sq7+GcQvHPw`xM;v|GMhYvK!~ z&#%R9pJmWYzZH^;m74|kEb)-!%nS1;vTCrL(ZOVj*X$_BE0draPYixApG}iDvguo= zk7d(m0?Xvd9N$#RK|*MuGT4#VUzkfj)F_%in&9w)Ew-6BV#o$Xb)Lu_RvY9{uzyDh zIg{zAB#$(-(-ymF8j>XuHG(eLu>!Vke*303dz`|S0YGyU9GnO$a6MS7W*#`B%kx<} zhcSP%9wD1z{^co#B896EKw00;Hz>K=WmunL&S{@Tg%8a}Y$80VZ5zTLG$u?PApmR= zHJcYL@I2qMy199EG*41jh9X*%Jzm3TO85(yCnM@;+|b8t=4s9u!s^}t7T(cL&~Vds zG_lP|xp>i>N|ZBt*9o+8TXJ6k&+gTtFR{Unk`EK^V&*ik5>$|`Y$Wm@Xien^?_T*7moR*ynzyGC`mMYtN~v>}{=D z0*UFX2})5{V}uYmMS)cpRy|YvI&p*0&UGSJ{%uec$e4U>rFF=5sydyMy32&j zdS3;D#q*d-IJt6M=c!W%?nJ>}ic%#Ynpnk;@%gnt_bI9Z#!$f|%i099HI-E+N{7_4 z#3RkiWC$RkdmFsE^JW>*E`n#QIO0jP&dBadK4>kVA^S9ZNf0%f$&+fhf0a4NqEGT3soG9|a?z%8EhP&4r+@n8(nOM43^RTECAU*&e}~==D*F zY##8+FvG`^gD3`oe5^>t9ajUx$F?n7E5)GFNh0@JSHK{62^R_AW3#HNj0D*SP8_hZ zQcIUMbZMLDyNT~>JTaFaREM0C_r7&ix*)n*&Q@+`D&8wzdnw`z>P-PCTy`t&)yZ2F=oX{F0m7Br_5uXMB6T7LsObU} z{3d=P``V2~ohD-R39ra9(hXmIot;+gEDPCmG)${bT~N=iD%fctR<-+DTv1drl0^L# z{6x)o0d+TfgxNDdL%gs8PHm$PzfOLe0a?D=p?!<)RZmk+5$%?E;pW>yp^_^71w_YO zR&DXRppKX@{GgHJS!Mu}pt^&{hxeG7W>A>Wj2M`@selR6?vm2g@Ox$7`Wu1I>Wh^Gd>;4_@C z_xpotn;GOG@~&A$(*1VVPZ@OjIH&<&_pW@gs?2FLUm-nX;@o75rEiNF{8=C(qhlS- zs!P&H5^Rh&y2IFYUI%L9(hUGI#q$@|amJtpH=DZr`NZ`~`V^{F8O zZ$wELSEl_lDb$@tsW279yfb)o>;w@GrSteJKKS$Ema8kpOGnZjVc6X)>=1OaiRCg7 zeV|}=YQQ)7fKHHZ?wOs-8U`(rhR;S~GjDs`sLq6pj1kaIb1JK`8bg{*Vl19fzAM~x zTnn>ilPitD5Ff?8zI6DZg~Y_pua!1V$=sKe>T_ZdODKH;hGn6x>&*w9+**i-0dk+0 zvE>7IC34<DVP^x+{ z8;--oqf~qfn~xb66lmHl8>P!TmZ%yJ(#q+LYu(M}E1b>u5fECoG>6wMx_U!1y%{m@ zC0@9cTGm;grIWmb6&)a%A#e7+GKsY*y9Q#N=%uI;TN5VpX#JTu zG&Dpoq1C(XvUfADaC8(Sr>~J0xy{4LLHASuiWC(-Abztq-AW&$mt#MZc+0!C#o}V2 zh7<~3m=|-s5aCjxO(O4kPOlU@&4Dq|uOxt>w3Q}7weRscL5Rx~+h)V{ZS*)Py}E0F zHbXjklv5MI7rOg{jCsn70x4xR3aztqG^Ew-l`w|)Ugdt0IF3wv(RKi1o&h7gaB^rc zFK*B9ys3?_ZddOp!IWbZFnw{6yq+ERQ8gpQ{uAL~rX!^+T?`?L?4S){pEG!|P)wm+ zjqzgT&Bcg2%i(>vYjD7|$K)94qz@Ip5X&@Yn)q!-e~<#JDVChNt*(|Nb4Fiwr|W~{ z2U*VN$Kk_lMzJWZwEa?ZjV@GENatN^mF2M8W+dU$IU}&f;G50*4x=UZzKftAoU_8p zIzQvbOJ+ibbUKf>mC<8WYS^Kl4kdWjZ8d9c(G5Tc=@GHefg-hLCVWDe3ZYK?q^628 zMF$#*_IgR2?%sYijy^0XS6Ll2y}Z^?vC=MhlorwtO@9yiM4fg|-OzEWCcs;F%p~2R zN|Y^CAzb{mFk!l7^*R0uytq1G$A)XPK;mYqayWOab4l4E-FAjC#V;o!UAd0*&J1-W zY!vH6lqC`y#sSeop0UEAaZ>zL|4oskwhh;cmS^+>D@rZR-7{d732n=m_L0WrY-D)CdkTEr(NXcz;c@O)K@rI_k znF=ktG$r2o@GoQOx!y+y-Z`<}IAQJ;(#A$=)s3p$7tzLMwz!Q6J=|m6WI)}sdh_It zJ|bt1?2av8qyZjCw*Z7*_fhax-q@>{e_zG;?9ufZ5ibRNZYGs0U=8^tv*zq;HX(VM1~{tDrb~@Q=uDvw5fFjM5t&sd76NAY!|oKsZM6%kY%@yPQBc zSz+$^6Jl>5C5|H97ZGA_e}KeZ@+2YE-zX)wfd~-T8ZAvL?jbwN!{uHRc~lC9oyvIR zOZUxxFg}xjy!YVeEfoSMI~(=m@_1ev%1{8CEK&n6{)@{)fUtH!IQtH{kB+Slp5RUc@#aq0BeVlMTrQj zQre>X%z;S58{-C!QE8s~aDGNY zro^Q=qj1$3#njuk$aC_+z~H@{Q4+u2thiMXSg_QZ>SJP&DRDoJ9>7E{CzV+|9RV_% zJW3okJfE8^UR8|5S5}ueK!J=zSPoLClgtIyJ0uOy`#JK7LhqItzAN&HF4y?H2N&|3 zWcrcZHii95M*%Xy^D}5Ooa>} zVWtR?yo0Vx#zoUV5%!iL?$}CYeWV^IHxbiB8ZSr?rS@j}mUB$V+?XGVr-UT`oWBm0 ze8WXvE)Y3V(9I29f~F9E(}gINh|VGMTqUvsgD9~xv`zi7TfCwL<6LHKe#J}=fL>RQ zXqMD@dwX9rKyHKXXF1DW`H6o|CBqgu!owr`;{@qj(F^p^w~*&0C8W;e6MAnJ+r9N` zK*Z9*WJRHabRqrSsowf|LCL*-qbX%11x%?LLa2NzD^gM-Qb_u$UL7P<268vd9n~JL z@N^uuB9cG$`BpZz5lVT8hERGm@>{<2P3AnkPf7c-=@KTgoZc~$6JY~nz%{D`)A@k6 zDw)|}6VJJ8WQ|^Vqk5XZRxm;s?9VW$4C5a{Hp!4BtQ^e~hQd&egxbhUPZ41$5LSuba;M1@4)<2+Wm87;jdf*f&gnhD`QI=3#*?h_N8^q z0C==g0CQ6dYI%U6t*Oq_0aG1AYhZaKBrTt{9>ClNkDY;yhJk^B1xOe0)WFj&21aHY zHb!PXHP+)Z zH#7y{(fxFGetruFJauYjW;Pn2&Ks~ilA4i~iG~@d>BfM^O3zBe%KF3&1k}l;rvVZb zvC{+V%b#clfR&Mer=ra7<(oX;FaGI5>6w2+_Veo{|MZ(*FC35l`_KSuH2HO`0Z;Ay zVE`0tb!{9ifdeBTCiwJ)r^Xn7mn9~sXdxmdD5YbGM=Pce90p?>$M3rp9Ib(aAZBi0 z@g&?097tnp8!JaVGCq9^T>v>Gt&EjEz{=R%5RdGap8p>OcqIBagNzBb=$39uv*D7B?w2D zoq2mCH7J$cZ73szDL)?C%OWR%gNM6liX;VfW0D8c>ZbSTo*2wrIw-5+nf-wKod)(HP*Q%^gA_W!5G_csanznK`d=r8x3z7Ej( zfd*-fr~Z?*%L8ph(L%}G_^CV?XxZQElz)3m{6)5=zoVa$8sSFl#DnlzT~e?FF?8?3 zJ&c?cD|dcmq2S+t*Kvug69o%V5GDo%l27J`T1$qoCi=+@L+iFbm6&k^>#}Cwr4*Q} zKEV>-mn%}zkbY;}HEZIll+ZzFR&Fc;!!b{;Lkeyd--R<7R zYuZC+xOyzPc?Tq(N$lGnN0*-YH|$Ek6hr@}5}N7z@c+VU0VMMJQ4@cWBpCR}`7J?{ zkfKDy{&&ShjkJcr5tgl;d=(3N>&F8KONORxL|72~jWU>AKJ}e07S{5Da5mTDDoL@R zk0oX|DOW;1>Cz8VcaHFI@6P1YN4f|--Z9?H5`C?MB>W__ltdi#>?Jt;QVMNff)eI^ z*QN9O3qwF>LAXuaJ0ISSHS{uiSFOQew;8*yqB@QVy9-Jfio$pTvtyAxSld-ux1suk zhzY$2=&lFECJQ$G^%=vQHw4dqcXE81ES=g7X}Ry#NVJ3Wf0}aZzp3hukU3 zc?*rafq*tbKt*}f`&vxxT}^Chdmk_2`;06V z(!`_4Fb?Bzp4gEo;i-ZG@i^>qSRM}|57R;LqpnaEM9|%-Tg&;afGXVdPAer5r###0 zNtc)uZ=ulEgvv4tH%XRiELt6$LVAVc3&>D8Fmj~(m*-xbqF?9*4ro-DOsSd7=G*;Z zUtg2uV)eW$k~rZRw0RbqBo*n^mfR4`Fl~m8=U~v;mVdmCGt`fvOx%*)wFkxf7u(0rDd{^^K}oCQhhQg$*hWH(a z>p?n)-uTBspB_M0XD&F4bu(@1-sAbv%}b7mdG#Ne&tK$}VqpJ`T{|T=38b(4c=|TxAlOg;j05!`8%nEbX|hr3gJ` z$ zSZ{JrmX_QI#Ktk_fjM}lZd?xLK`kpR5|n+o;o6X%_16nkJ@v(0R6C&}i>6(P#Kjz@ zDpx0*_w}(O+HouWMZS%slYUoQSK!J=-an%8XZ{UK);}UeU|?kV?ft4LJ7Cg52j93y zc@c-@fy_A?NEe0d3Fj(XgNrBeUIku4mm2r(GI}G79}bao&~tWk`Y_v?<@qCCsdEtB zTSJJ~EfK__K%j8RBs;U&D29E`|qbu)g|N zu*=gts~=%jeHiN@JeXn7uoT7%AuUXVSGw$WCD+Urr29^DujZcfD}8gc$ZTpOCJWA5 z@REcab2pv$NoRblb+U)fe2|NZvXzIF^Y`hy$sdg67&+k467SYb{&LbCn&3n%4l|%8 zUZv5`;i5rv6{dN8|6I?|D)~o7`WteuUuU6TLC{a2=qL0?qaZA;@GJWJJDm0_mIE?f z03qSeXpapzg{l4w@_+#C3DEt78i8bCPyKlUWWUwg{k0QMz~^Up^|TY%T+*6T=9QqVn(eJb^%CD{C78BOR+JAStQy^JkWyoB9b=0y!K12{xIx;`z^b2NIM#OP+G_H8WBMbP=cm+JCBnHN}Zcqq!*)e(-B1g7)FX{By7 z91G#Vf^VVw4+(;%@>PYc4IwF}mS(|2!c`BvLo6JYGvOWaN3Vo|an|_`vQRnsEHSLm zS~`jZtP@EHO=T(kfrLCS-?-`aI*!*yF%qH{Qo%IIi;17Ao*M^$)bDlo^c~XgoEg;v zuoMh>-ism_X}6uUep`>L@`9enW-x15NAXS|AoV`8aXRlOjs#CeMcb_l*;^EqYm^W> zs%|tpH7RAUmuq1lEU4y_Cs46`A*h0M-9jS{F7UV(CERzkWze)>>p#8nib{z!uHGeL zR3XzV!|9MzqqqVhJ{B)7YXL6eTKnX1sfoFu*RNF};a$R7F zAaTu0B4#o{I?lX8rdWGAex@B%rz8yxa_b*7iY2t+Pj|CJV~!@|ORp?!yHpFUmH_ng zx7N`ctBwvOKXsYtN_8MBy#4fek^I*$wf8yC3ie- zDa#|gHAyd|e=vQq{Kk|2M^?zh`a5D#DIi2A{z=Efo%X74i_1b+7xl~KGD}+X;afCv zk2evh&v)F@*+}?HR_P#ma9v`0@zAtF5u2D=@`}NllHxz~zK2n-k{;Js4$W*X!``Z> ztc`IM-oPk>T+gtBnf+u2a~_Fj(O-NW7mdG21$lGz$aV!c;So0aTx(%dk^v*fp&(Ik zT-GPu*5p#UxVxsmAZKNqNP97mPOsn^>`3J9jgIM&WC-Gc6wi#kUf=w!PDrE;B0nnt zn5Bh9tTh)_R1hB&rBlh0p9HqZN_zQR5Av40um&n~0aO0GMMvXdHzV2Rt5aUu+85D! zXE2^i8EXzfqT<}59h;8Yn~N$jqxH?!6=w0ZORtD%1TmT@Mi4WI4aZgE-0YIkMN*9W|6 z?n`D6aFLdL-}-D!5zX>IztGQjob*F8-i$tz_?#e|f!X`r*yp=aQI!zZ4CUI|$@N+o zVR>r#H+cs3vy`lWyDD|X=W`H|KKvfD&ky~@jf;>26hl2~AZ2wzKW8V<$>CJhFCw=lsC444?c(@<(R!7sDa+Y`=rzO0r^zp!g7t zw~#z^F)-WP&Lq+O_}7ojD-40JF~V|;0Xc%AX)qM=UVLeJ$e0O^(CBdg_bBw$F) zyQ?eTKlAaOdURId z;27r#9M1y+*jP#~e*(wkwr#jDDis9u(9L1h!i(cw$CP2_FEbNHV@5fm)?@Qk06$vR;_;= zweK`{e~69#rvXz2h9^2VAfo&UnF1ef{{%7xQrmr}uKUZ#^tV9qU*$7B-FG&?e}(P< zyYd9*{`Fr>3=IDsjQ>9w&;M8Uoq_4kcs~Ctd-1PyE(W$=cx(Tadi6iGFAPEqf8u-o z!b19Ff%M<~uP5*GY4qv838dfsU*>=Q#o#;x^Y7%8xaB0Q zUILN7Gb9b2!b$juBM{ON)IGAe4_gal+OXnDL&dp^TCOU3(LMK~#qvvnbMstac(7|^ z+Iwf@V2$$vvPJH+70}trbQCQMlhVdtV;J4K>DNjkRiLQ+`T2{_3(OJc&}w^A)L+|% zgj6H7-b#8`xp*3q;pXY&URiBLF;ts$%&JchhAaZcj&vqVYt;7@g$kH1I(4r6fr67d z$E@URa~%WyQk4GLX4|SXb&78{g@bK9zGARAb?b6)F0f|Y4Erl&VSZhJQwf=GwmZ zBrjnFT;Eu@Mb^;PxbqryOmaF$?Ypl5c{Sfp#YIh&0G2SyiHFwaOV{jW+WJDvhDk}= zE42d|$wv8#?o8*KoadgU^%b;Nn^Q!5@QRU(_}z?7TnaU!;2Jsp?#>4UTd$4EYp#GU zs4jZzykTk+KzBRzvbWS#pYtq-GfJsP2#(uydA`-9)8W)n=UACGE;UlmX#9*?ik&QK zgL@wrCcgr?4R(R6NkxEPAJHUl9hVVpE7Mo+1A<-$z-~!w++|9VO2(lp=F#Uq1?dA0 z)b=Us zS<;n2Jc7w4Ht{MXx8yG&cgzvyHk_(h4`UWANz7btYin>m_w~&&D0$4N$Eo*cB9vXI zPKm^!0LtaxR)NLg$PktWEIK2wg`kJ+PXU$;cn2s-T#p=aVr?OF>`7d5Rfvvk3Ok!V zMSMFXC9ZZ2#C|lLn`>My(l)Yx+==ZGGcI)Np|uCy_>rCfP`u_ZnF0&j@1i+MO6(PS ztk8qDkndLV{k&C&Pc>=4Q*LuTgDp&7B8qwlf-bt>jm}BvbC8f9*13x%#e! zXX`3<4YUrq@<{EZYGIZ5Yq<+viyM!VUCGs1Io0{uN9a9}N|f8pP@F>&TS%v7MBLyN z5YY0DF)G*G_lac>W|0nVn4j_|%tD9!^qL&0wB1oCG6Q+Tj$e;E&t6olVPH-}fv7Nn zVE2XvBnxYB+I)REhCM)NUuT_kwpUQ=C1(JnENLMsLw~rS~2KAb8yd(7#yDZOu*xT$uqkIM;)rJ#^q>g;_ z#T2dS3be3p!+Yhk#Q9aVzkEDrQdfc5oeOLSfS5I8y*RsW#9ubsJmPKGX!|!E{hG#R zTI*d_>%Luz_wTGEtaB;69^=%!A|+?~F7foSo$8)>kwhF6lpe`hkQw7$)h$rAHEpLT zA#oGWaVNZX@P3gPnU9qIIo|GdR?%orv(t96QRslwLSWAO3LU)<0l~2h`)acU0#PF3 zt&>8qeilO3yL%2Sy|Qc!j^8cX3dO(5zu*JSf%vs;pGf*O?F1Z`sI zME?-#0|PoKd^TuO;@SahVc^h zpfqidF?l;YIYPB8Y6f5ZdXQB01BlsahTa!IFr7y31aM*N2x{ts#~BcekGZZsW5x~G z8%;zPEHIrA&I9?@LTajQeIk8B{?i53Cz6ZH!m6I&5cHY=dfMn5Fki`Tnr< z0lP4_LF_;wmTU@X`aB}t7BU2DG&xOe#2fe6sU%6IYAiULoiAOt^0;~&M27}$RoJ5rKwv+BYF1_e;=-Y~dBTygK%I2k=Y&PB%!a?#SP zw3kp|MaFq~!s;L;;AHV@jSogf?Ucf7ekuP7>DvP<2({99nkBGf!gIB+>S54a7|GQW zZ(n^>B-hIZj@@jevmUkUsITaGh|IJ6&VvrA)e1Y+sbkqA$hE%Z_N1-h;*%6^{}>V^ z-kzP6&0aQq-!=q$8jR;%RVF?$0zb41a|zuFXuV<)1P=@$W1$-9za`LZoW3>)zBM5_9ViP4aIR5-Q5k~*w_{cd|UY!RqKN`zsV1y?TF zFRW^cN2`Sm8!XfgTMXUVZ`M8p`MiZ!DP~CB@7+>jb}|kn*3iTJ+yGtbfaOwge_nF& zrFotgp4Hv+M??M>qu^}6o3n)mC4hRs5JF>hg_fW%nY%|mitpepK30;98f>h7peGEM zeE~-TkhIq4LXRrC0CzH41Tn6TFb;iC|1!WVSslvX5L3N=Zqo|$y3t}A_2CEoVtw-N z{z5RDf$4Xq@Y|I`91qi6F=u$66_ynN+=&D5-tjq)-C_&H)}8rPo_hSxzQO5kp()QK zSM42#9M`1Lqj9z$7Va1wp&q$e@?)lJ+rnUgTRDY4C`m(b4O|qHEOpw-B(wyMOcE+O z($+Bb8z(g>qGe%+`)B0wY0xkW6h40Fks5>BRR<#}aIU8c_+mZOnZ7``^CH*_7uE|m z5eD~FYUx!}Qz^|(>_jJZ^IQJ3jk*#nc5h}>i(sd%NQx#cePjE~KMvq`0f7IyI0-QA z>$hdc-zN(J^)@@{fO?x!=`Wwh-E`k#!IHb&){t_33RHB$ z6Ac&zGpFhX9}L2ehkkJHlz0qp-GznR10eMEEozzObm3Guc7baWz2bp>t7&xeEsX~d zN~XA2JH+U3_jOJ-Q@1L+>K;!+%LUF!{_~22o81eFA8C2B{>5O<|7Di_2W6JA{>5Mu z+wb6^(hwi4I~~M}R?gBDP!iMGsSDn2htWr^YvCyAah6+UTb`Lmp`E{Kk)yB|e>@8}*%D<2NiozQF7IBm8=j$o>2Kf%P{l znM~hWTHyQNG;@K+e*5|9_@5|50yUEUcKUzl zNwNM;AyP_SA_C}1J;mbS15r`9MiLVegqH4WGV}b+P5nkwA+`A>!-QX34ZmoGIP(ni z+MysjgQ?nhb(F^5GbfV>BVj>~`4)48`3q?!h1?B@CJLrU`j~Q!9S02tlqSWLNUId# z4MFbW>7WWLSJT>%8mB}9;p>H04i zchTp(Op=GvXRDox7|c^N6E)t7W97iH_p8=nClsPuae`9yfG!;!+4#1&58jvFf{Cp+ z-!JtAS&$l}Uco$i=XzB9=x_at9xAZ<;kRqHN=jl8dO*qeTjcsydq1&O$BK-M*NedH zhRFQ_A%kZI4j$mR@cIX~F5Im>sGX1A6(8I7p3!WaFH4la@H}N9@W>vxYXorT?QLy3 zEm=zEu$5^?ew8V^#~$_yx1Oho)U5@@Q=&TN%m^_U8Z}nm+1ef6T&yT^6M>D2j_U}e zD20c9<_-fWr$QK0r#}~97}d#)Vf0pNqPRIB+{p>!Yc@{8jn=HvR&zIB7MT>DFq+VF z770s2CfDij2Dw7JUF#h?a@yCQMzizF@eT{oG7JUlB{*q+eTbv{Tt@$61^V{8-f{MN z&*sk~GnU)C^j$V)v!JpA&lo-;!zCf=a4BiM)=_$HDXKwGgN*l)AX)x3Rx-MLXc_`IRWQ+YMX?iA2{~oTl8r@Q+&S@k#4#&R>A-@$te*hd(vWQ0@VznoEI@oq@qF3 z1=3w2vavU|O4;y^m7-Q5*-TXZzQlJ}kiM89ZRU z4M4{X(jiGRY`_FKlM7uwKvL%hwmC9jLwvHEdxPpaT8SGrBW_}3y3Q7O=ZfMS$N!o| zB&KA8@}qI;+hVS7_J)GKIKtW49bHAzc+hO*L*vj{hz}Uv>Vr*yq|U`^ha`1w3}vNf zcb*l2_Lx{WS?J$Fj#){^$hq5A_r~QGil-h{g60I;cQJ@UCU&xGO7DYOJ@;qC`zc$n z#ZFa@>(socI*spw=@4JfL)kQ?gei&13rsRG3s669O3Tp)tu@#y#w!3K^u>k>n5@DP zx1=^aYHLF^5L1W4M>^If$pEUlgBfuh26bXp?ve1cl`z|yWi z6m*K`cv+5ed^!_TXBe;;P}KGHxy|4$?e z1Jw|p0R4Z)>nTzA4-M1*B)Is;1OJhGe!?jKkuCl!wna}5OgI1YjsaCRng2aG9RJ=t zZTf$21OHJz@?UKSm~H)Uhg^Ue`2Y5o{^}Y3yS@jU<^Jbi#DCY|{VSbU=$}m=68@90 z(f8=i_s|gDQ$6%gfg#|XO#eN^@%;cWL*#qR;AsPRH_(6gXP-8JR`rwf__P7+8U1%x z?rB5#>B#rM((m#}*#5VLlGuI|O8Q5>>;Kg;{9hfze_kEKcU15*vi(O^_87yogzGxu=o=IvzFvET21#3P9e8e-P zyNm(ZPY54rK7+ArQ3`swqiO5_EGZjl;T*#oWNH~r=$f-K%{QUZNi0JlKWY)~Z&F6U zTT}X_!jw1nfP_bxW2CV1>$bJP(6{u3@usN`@Z7`smP*{T$`t#0k-RZd$8}VRIvIyS44GHRiTu7dr z5@}zN+yEA@d=9a!;V*2VEukW{=qZz!;;-@TJ%D`+ODhwxG7QmXD{W-qKIB11{IY zq&aJuj^qiKJ0R~e5V`CeB4HAl?_>z+WiCn$26Cx8_WffTnz8ohz78a=n1u~uY%T)& zMTPZ@j?>NJjGP(=6}M)+%_x2K-%6AYOjp2E;9poLWTWB+e$%r@SKcWs%aV!c8a>r! zOT=af9bqS3`JCclc`cKgE3E8>{&4UUqM}#` zuwJk6lJe>kOJ}l6C^#SN@M9@{RV6(S8nOTT@)QL6XmP5NEZoUEXwmdsbZZ=eq@ZY8V!!m*owS-0sar#aPq#_9*3+#J03+m!4kSSTvVzUEmtS5Z2V zcBrd|hXnK9b7$Ebgf=&0R30=O z$_+_YXDM~x$O_>RCpN(djof@~Ds7og-Q#usaD((Ci~G%@#6OzT7#M%IYN8n~VI_zU zA+%NE0dq!qJ>XPN8O>MmX#4`G-bso>0|6oY0^4u(lkRg92nbqJBl`2B?)KA%f?N7_ zl7d}K-B^@Qk7z>{Bv`LU)>{+0L=WV(FE>6#rb;;pTgil4I-!B;Z|9&RPzIU`(QA=} z4t&*-jmR8y04&EG?NZ1oMvsP=H0|%}mK)v6+=ZZGrvw=PN@V{J-|T zJdnz5{Xb-$=P^Uc6tYKqn=(Y1XJt<2%wy&hWr|3dqDTpe%tMk4nIfVHA@dZOD?`6` z@6I`wy`8@9x#ym9@BL-}VXyVB{l4p6kZ+(xfIlvP@yDB}MI)<-}>Yf!eu+UiK!|T-{UEM>CcR z{fjtWcsm&F)@*w`O!*)7RYUCY+ye~TLA-)ObOB#A`L(a%`WX?N;vTp-W+zh!Dkp;~ zHuveXJh@~*Q&9P7@DydNEF;YX*lj}o)@tv$v5QsWhs2ge_=FC$S-Ie*HE7yuu}cel z5WN`ya#6MsIX^S&a&F}ek@>#mL&vS>^?Ho&O)Xq(M+3SjbF52q40eDy*2gqX4|19i zjj79hr=+;rE&58qbvI4do-f5Olp6%gy|%oqz!X+EhI^p<5RD!k>~Y^Cp3JdlJ^bQd zW&GSuoc173ly?!Zt7)?wZ)j9cd{`ZCK5jl_HKIKwz6A(FZQl@lH@`e&$mhZI`f&0Ui(y4liy%1~s1241R>w5-2+JCo) zni%9YNTaPBd(v(nziltS(jD90R;r43R; zCH=vK>&zr-N*T)crNf$Ot14(7H6QMkeM_RV8K4kouXih4`LUqEH8P?Cc&d0;tz~M#V^uyy_mWg5ddIMun96!2uL&I-D#S$+G=3P;Piiza%+OsuP+=X`;Cv#xykGKD zVIkCYLU}`=`3>Vn)wuzV2T$=$IwShq4-nnc5_ zPc&X|PWhI1q5G%@*LXO#C<;RE5o7=9tNFXWn#etxtN!%W{Ga#LMD7s;hJj$)?VWVB z6|awokUc@I!$#clF5c=D8RPAn-)5X+#1q-rLgV6Ls{w%yW_%z7p}dbxAk7>p9EMUgd=h9tmIz*-!|(L*CZ* zaMf{9JVGk^YjM=0Cv8KVOtQ%r@|39ubzx5*F)Xo}vz0{PD|@WE-61@Y*{Xbnu|6yx zLTZtQYZJ%ES0x-g#QN~^MmuiUMdqZ8^cjftvN^R&L_c=kF?kPsahB8^| zAQ5Meu}Ym50|A1w^_<2>pQaZze|;HLd+5~RdhX(!4Q{`?`;BCE0|&}#SJ!%rd4;#a zGnq~N5SZ=SrQnDF4xvs$r6K4zLq;Sb*i z_$p~fn9axRtDdG)-#0JP^s&sk$Z|~atojR~Fk36#*_Y-FhWM$^b6-6&n_PS!UHiG} zDTTG5&-l6IL1kE*vTaMpY!F@jTFS(!PK8?TO?KjPxg4m}xZ3)KpoQ=o8|7O#?cP)J zyDiMyK!P8MNH7rAmVQr!ta6Fu!amuDLeE0N!jN4X-+HeL%6V{PLTwc9zm7clI@QCT z_fp%H!2Z+uo6l=|*kso)d^S}2tlw^an1XtN)G$7HQTpD)^+EfIVDgYD%a^mNylcvR z8mkk?CtqLrlhu$Ou?>GV&BK_tfBx9CIb#&WjmM+oH!gh=PH+mvxz^->9qi-eK|<;V%QaNc=tE+)4U7E6Oae|*va zpQhVxVa5Guy_7>&OT9;pZ?f7Dgw4Po`aX z(xO6f?Anr4!!xj+UI;dSk+t~<7qD?QkI+bG@p*Ng=88PinTOJ1B(Eox$HyeJ z3`kc_1u36$y>Lg1AK^6->wq(k0k7^zg%5tUaq=x%9 zKnrQ+mBWc&Yu(#d^&C0KI$_vpeI&+M)LH>z?8s7}I<u_0COnUBN(StE$g%+4Z8Yr_@P+O)1J_i%UME5XEKGi!!i6jYu~}J26~Li30WsBv zFV89cg2`;(!RHrisqBe3H_ph7s#LOkdHLCNK_rdvihIk^z#1`OqK47Qwq!}>`*t*L zRtQ#zuI!L=mjLCNl@K}{3IiHZ#f$BoUB=QX;`6VmG}sssx4?P?=M_%ChzW|lWsEFM z*2@TO=6sLzmk_i1sfroOur=GRJcKjzOUP)CQ$D;Ln*uwS*iy*ikRB0HQ-1UFgLHC@ z@yOT9H~K6=vPLuSzB2Z9zEc*rdiroMJfZCAr_a&c-W-*t#lodSQfEDlON~pnUL4sf z9$Y0*R<%C0Tg&Yc^Zn_5|I_{cf5rVCxmS=Mx)bErRE)yoLhn7P)Fz<$DH~|W=(p~k z4Bs1MggTbZWB9eic+nrEd2s3RWxdYO%BSMw@rK8A{kO zmu0On-h5n|KN=L1!!W#$@Oo__zoB~R&5PwX%~VZv1zb`ymC3;fg1JyN?rZJO!4k?_Er*Fn` zJbAWm|Lo&~r#OKomQlMc7kflDeli#QSCR)q3fJ=c&p!D6VNX#HkHgi9;y+jRLrWm*jDo-`fQIV4t)9Ubfjn`JU{+&R3kJ{ z=ax{=gE1u1;nZf?s;2GgL58#akFKn8jGGLvJHM8p92Gf8h&?{QX!GzrR2B@|p&_Vh zwm8%S8iFs0P`h;3t5pg9aCVcmXL>qDny;_iOF3_BWEmwN2#8__9^EZ-3xVvNc!| zd1}D16zOoaZtBZ9;oFZHi*gCYJ`-6yf6u#W9b-9~Wy`AD&h#p^nnEwkRhZZ70;88s z+NofJ6T{38j|TCp=|pwaiOpZ>A&tpDR%Y7cShKZU)2!U1lot@09=~aQX<1096X?llZnSXR%6&UMQVkeG`CF-Dv%4w`SZc zY=PLhLd9%9hCK7mo8fAj3(cpyl+(+2_O{6+=kyyFYc34NSZGbk4wFI7msKb=PaD~e zaejFml-VKkpr{Bz5lc@bG;q_(mOzWRRObVOzxip|VITGbt2gHe;wJVr@p_!Fwm$u| zF|D3AuF^0}Z%RC;syS)e2Ru&b+eLvmLK5B6k42vUWW^iZ>8JK9_Jz&Acs+Sr0XZ0t-_q$e3UMik^y3=1 z7h`KyB~Bpa{OUnt)n=^aO=A2D4k_2}<2^RUq#P**& zq=cf;*}Wf)f#6V-a`unU4@nmObn*z$ueAEW7ZlzAhwR1WWG^HVa1ct^-R<+kH{9(9 z|7;!-&B6}EPC~-}6)%hJher^Rf9DYk1SIo=!>0d5!U+gKr2h{;2M7>O;d=@K`%z15 z?~(uO`=3KQ0TDgEt)BnaGf~(7e&UI})bjVrKxBXI3G}8s2?dxRH0%f9suH=m1ATH~^k!2WwV)dHW=WJ77011zg3 zYWwnAYaG6CT{~(`tXQJ0=%q_*FsEgC)%b;>pV{D9Stmh{lawnTdct0xwLLp8m?&2A z*a5+NDCHKdukHH$7ncvm6b;HoBzboV3eb)SY(^1^h2l?yhEnf z1x&wLxybro@t0L=Oa^hcLGrZpxz`32IGDsunD(E1f3BE3wM*evzax_!eBWvEtj%he z>R0>FkMoBko={UC&$Ke$DC~XD1t)84t?O-_WqwtBT6}D&Z&2Z&Vh|{2#yvUA|0`G0 zoiFU0WVSEfyWxlV$)E9;Nktr9DG&{Epqa4n(c^jQB6wloG|!johb3Pt;t=JF^3t6- zG$=Ih?eamm_OvQ@*mLQ~R=2E{nB@>zdy5X+*VJX@M!suCIWy113$$C^K*V9ZNWb?snO*~l& zUX@L)Bs2-G*N>M6Pp&K6&_0woi~BZTtFihdsrR{L9Nubgh&qq^=%`g5-vIPMn6Z-QeG(~d{3 zu37>?L-J-g#N$6(?Y2bh5qHEev{cnp_QV4b^`RJGH^`VoCKOFg8K*W&Z!+_?+6&rB zZ=7WzZ&qZy1|^|B`*k?ZaLb_rcfN3-rQsNqOLeAcjv`4dwm77NUSQcqySz{9vdibY zwhI|2wf$5eP0&6Q9)qRl8_w_x$U6IFqL5ggbi}PYvtdVXGcrP}-Rc<&xlBuhtJbgCIhMRG-H<+dG!tF=TjvcMG z*@_d_4NwRW)esd-&H0>5if4xR-f0q&S}e**^!$ue38XL-)<#S0=Bq>NOjyAG<|%cT zwCv5}>J?=p(e|y}0=!#WRR~vjCNG72Xb^r>jN9>5@S@?Io1B z;rsO;a7~mq-kGOLjBMjPbUE1k`aR=@q_{j~{FRD;EG|j8ZntV&*+(4NEgRQ2*}`xG zt8z`=Ca4|A+_=L?=qCF9xncRp(S!=x8)7Z&eXt{eRC)NHcf*} z(pQI()0#|vL2)-U*oY!Sn)ILD+Ej6P+dGwf#w|VKMly|DM2$eDH0X}#4J|%q; zEj}}Wh<6JoV<^R9udGo8cU0>qRqJH*$PF18Ye5=1^H{#FklfIy6H)28?^oZ~Nckmk zDSLhKRx4w?t*G>B;)>e`f8k-4NIe@@$H+|Hz=3mH6$Wc2r7U$NIw8Jo)wkhAU1=wT zTT{;IsZt=X_*+>QAj}!%dX<)%Zy$}(o>uE)(ms1bp+EqX-#~^;e4o|HmBD^@sNP-e zaBS5ZAD`25=Gh)^#k<=t%|^eKi{2MnRcpA~eaVF4A<2M8f*u(Gd)md?OIvU2N)K5d zvAJN2uuNbX5*JSjkbsdGjJo6xRazFab{?=_a99tRm&&_f`mJ({Fh9V^XSb=cSKx9d z=4%-v;|QD($*)P_Gd{MIBIuiF%A7vy^UVRrI-405G3rk!b%w`EdwPFH^FbvmSt=iA z&0~0z4>Db8FKA609qs5NVX-(+*W#ahw%uyW{;VCFg~iCc3XQ!Fv-*dV&Y6>+X01Ut zsb*`geD0H{{yBjHVm0rtU3t z(d=T7LOWZ!z_1(rLd#%2^%_zn;fj-RoR6OW&G|*$0G!@4mh8JU9S9{$??Ie`Kz0C- z#sFD2itilQ{{tB=EK9^HS;q8VVAU8Lh1{|&Vr2>Dvl5kNqGd57qM{&V@Jd&HG?(yU z27F!Wc(4F;LTyg!A{`q{G4ex|(PlIY`6sTBH+1WQnN*3q?=DIT(x)x*Q9YseB;q)F zI7|qaGW5gY`Ov1P@Iqx(ZNhn%qL@>0W!I zWN<_wLBeP`in#DZ$NeF*lz82O_)y~~dQL;y4B2uAjHmHlEgNZt!PE`-A>xHAI^Kb_ zLONm!j}b#APTa1OL`nBc(o{r`JR33pAliu~w#;z5-Xn;hTb~J= ztAo707L1o4f6yw>R#8F88KZm0=)8Zkyg_=hH}@@|1_n zAc>fZ7#i%9?|gikcWq|#D*@ZLsF%BS$sP^jz*xjHjzEA1xFo7U^L9(RsT@8vzd-u@_bF?n>KNk6_fFeVwywiGuRQhGuhRxRwztEzKlF znhOkLhN`b2YQv6+htwV&V57wiyrAJ3Wp=SO)>BeSWQzexV1A;<4|bsb{hM`;!+f-jVN=z-EF2q90S#v)u!53SoZ7cWcXSSnEHKz<-H&1}rOwVxrk2{|rO~ zynCR^ZTvHkZ7SkFD*12Yp8*0nZig!Yt@#hYl_0dHi{(=R2I!a2+A$XY%y&=?iq;PQ zS%B@=@<3pAr0`Do^4CkK|G?!Rv7l@(`p~{wJj&0oM9hx8yo$#ql^U;b{o2}Pk`3Z@l#N8pwm^VZGX!Qu4Ppqhiforf`>Q#yEKXMy&!Y;*qTy z^bE%kPM7GpKA6PGOH1HZ=A=H-CC(|}8psKYvDJRBPj>O7(X>eGO^XAT8Yd^=tK^ma zibp8pnwrifvOi*VpYt2h@5l>MQ6=nZd-qwIq`)OYxn1-L^?TWf$?)QXF6wz#D8rUB zyXtP+M0NIOtWXqx+baDWGTU!`o_O& zC_T^r{7h{e#|#;)Tc<|7csKoR@)8f*6ukme@yyHmg9jPo?Z1ffeY|yK=#fPI>WIR$ z^Cop{-Oc`j!W$)Aj)rmW6db+YD>YsQr0MdyOi5%lD}phLV14WTC-9jK@wHwKHBR+k zV}Gr@G8$l@b;pvqc|b2~O)q#tK6Cx>rmTKzLUwO+@PLKMYp;UFq=T<0o-b2dNLYfH z*%IIIC(6KJ=d&wG$BTFfRV3oqzxbJ6$UD|8Dl1Q@v6}?AM=WaR2-IzP0vK3O;k9pN ze8P>HO}-iGPjxqN(@^-X(%R@X1i7qtY7_jpD$xU3E0~iGnB>*9jEdX}3U z-~8kOGLz+y3dumhNMjixVttd(s|Q-RE(>#4nT&FGb1qQO0A8MikrwD7;<>x;&m&d6-mMLEUxO(ocaR}wrXZVrNdvH8Wb(KBD zeZK`A>Lt2#^RUfq)0F(zQ^97A38DHEK0}9j^4G9FIfN`3XpK}@=R&518- zIORrkLn7sfyh$xf#9D;U#Hlx518|f^&)e;?(4d*Of5CPBp;P{IiZATn#<&WEw*O7e z`$z5mZ5l5SUuTEL`$rg8zYj`4l*KU60i#(_pjuEpioqw z{U>|?d!GMW%l`W+`jc$+52*gzVSxX%??6G&?pIjiu{VS0GZ!)f7AtF41QOpQ3;^^!DwqoR01GW1*2_1cOoeO0QcJt`y;!K z{~9C(O*XKHgQ}l|sy_);|80b-;O!9!e>AOr5~}|HOsERp9#P_l!{jHS>Q6$|?~!AE zjYYDZVDCpm=O>}+PeRo{g-{g?-s2$+9J%e}$}3q{7cc<^p-h0>FS>+X`<&eH-2|9` zibdSyv=H-gyhyS@iE%0>(U+gE5JOLzZB!TQ)gZS_Y791Yj{1WDp9!mTGx8{a#vynwj7(wAw=V@iB z0B}Q6@1#G-%Y69gU?V>49U_Ff?SLTemn6Jlsh-Q_tvO+`A|#ZzO8P|9h3049s-3El zyJVY73S(xxo~d(?fHlsck~qr`G1n?Q(5SOkGu(ekqdrn$xZj;SY(A6jLAWiWPG>~p z*9vhKt+!-BX3B@_qIJ`Z1`e0@KRIvpF;(+iX3woKrWD~}I6dpTvfPzRleYW2ZbT;e zWk0M9ydC#Rkm;ttd+B#hmiYE&`Ot$>cdv?HvCfD2kX44?c){hBA$;`!u8b_6Z)8;8 zhS&syL7dBqd$iT1GvcZ>9%5Xt{LYZ6o{I8h8t3y?)0>vJJx$};XSaO#0`a~l5*?gp zkWtd_?%y+RWlc>aqhZ7eHqum&*QDS|GG1c}puC0Xzmd}R<#mZ=hgC9Vqqo*T_q?5p z$HftUvlVzY-ir*TK3yC^RsWKVC?CfX-VS=+HgZI1-yr^}7%uJnd zbYrSaP5y1Wnt-1EWge+81IsmCqC07~1vM`v zPyoTrc;w!uuPx8=Hr=07le|*V*RSzP`_v}6XBQ!SV*HN!C9_QdpWKHy(O;M*JfE?X zk0sKqjual{vh%o2l{RisOgxkxcF)_2Ig6CdwySJ?D?K{5(h0WA-I#nwaeN_^|K`ff zSHf-@wYlA}(rswukCt38R-8e!4IB_>P(+)vaYEwg&F0~;t-iqLiv2w$sm6khz<|;7Wp{6_U0WTeOXO z_jyX02^T6R8kyzZHoLnKjDLPuzO0y;A@i|Lz;nCIoVWHh?c!5o4CD^F1-AU9p@&3c zuiQ2^y+WS-zWdY1I^W~s)KC0N@Pt}P8+i3kGLmNXJ~SW}b1(%>(X|wG-TUAOYbp{s zz)YgdWl$~D`N6JfgZ$lr}7o}kQG4zZ`s>&++jS2UMIl6jBCJG5`;`Ux|b zmA>%q1xSZuQKZ9oG;x-PAI}tX1EjV~;1u zw&C}YD&hZq7V(pQ z_$U4FU(y1YnE3xD{qXj;1k1tyiNhK2@jqggy8U^m@4rVt3`S$_C`=wjKnz9$*60*K zK>QszM5h4%;qUkmIt36AgV8EKIt9GVcXbS%0%{8eqhwQb3ZNqf*zi%Q?UB>K5Y(cy z2VDHW2IxmKLhRv%ezLm$9;+)Dvd!z^M+(hPR@eV^R#)(L-;y5<1@KSu#9u;q{|dyS zgIVlh9r{V0_>(;Ge}p^{4B4Zv0eGh)t?^ItL@;EJDEd$G#6OKZak~}i5BIj6u?LN# zn*eZ)>dL%CJzJ+-@JGRqIQrqq3X5qG)2lclSB>wnQ1K8x^Cx7xuSJ>a6n6nWP&Dy2 ziD*L-@y0Cp`RN1Bp53WbK5UVemiWDyUWJQ!JX6fPE~PK2AH1cAA_k0v`NSF?SC8K_ zzV?feFg4s%^@Qj7l`TTvB5D%7?o^jlrK7K(H4|U7epm8_PSoYy_3@)4ZVN=ZB`qE- zW6(Ae0kYRojmI^+IECYr(%yVK+o0P)Ic-S5lPzh5S<-s8KVYTFRXzW`Ok za6Sc$oc@6GDZ1kUrRXn2)qY4K_ovh3{R3$Fs|fP`ET2C{9vhDCOMKh-Tx}xmvV+!3Phy>rs0%iTAp5i+$yl=W(bF$x6f{lwLL=NaYg)QSSU;}Ji{(qayvqDF zYBLt6CjCocHO`#|PYdMCjO=k=Hr+#yY&gV77iI}@ZD*o<4{>PEUayu5qf_Ji5^yhV zQtz}OQ|kHn8%IiCjH~V5%@gtK{5dDyLzJWq=5i8DBT)xIa%QTAcH zz09{mtwKM`tiUq7?C|AW1)_Is&nykuRX%pY#c4E$5!17^Yf{mJpEZi@9%#`rrDSi? z`oJt|YTrq$R($Y$St$D`$(K~vcY`D;f&8-Ih-c~Q>cG1viTvlB5b6(>PkJD`uao z&o}03eK4mRd`{Z-C^@jiRnd+t z=wM!TL)!_-u!-k4tmzGCTYd1lI@{+jTb^1f@p7#aUhINO_RwpxiciL!k2Qf^z2`jy zWqzzPpNJsj^=MFtgMeq)W=)P%y0^$IBz#)0)VNO{9An2AxBwH!>FV&S>`~?kJHgN! z2%k+DIuJGK6h;@&tQO@-qMUP&+yI&2tFTeWHnN7d>0S0L_gMG*%&{lyTy)sN3mCf1 z%y}0wLKqZ|KeCyhG@;$!Z!Hs_7eVUm^$cAtj!-e!D3mETjp96>x+;%>Q|gvWNDG|5|qdx|}SxXhJ4)zI^O zYs%Nt$mN5E#fPh2lpDq+17nlpAqL{vu>91a$kC{CS7&~M5IKq+?o)7^D1-1Dh)vo z$qO;&w=v;uf)he@%q_$q#lt5uWDgZ}1hZ0@=d06j_{QHq`SM!9-B)_UV^^?l7MW6i&)CGv zwuSc}pZFIabK<+WOMnYN4c!~~ExLmX5&{ebEfEb7Xpv4k3m1IH0`eS+2-#5!@Wgh zXKd;yO^QHHGP!Tadg0Wx9M1j*ren)n&m5yu7pyKXHCk=*=m+jlfk{C#5T!B>8{{HQyWkw3OmS@?KxldFwXk zU_#X!ysvkgLwi;Fchb6Jghg%;0^yiDCu4<0J}-Egt|A%{pD2EGpeX+BY+z9?})=p z5~%ePE$MG`+ts&cUdT6hT@Kn{xDDpuhqNr_oE^&#-O!<8d{DjdWE%dL@qY&`z)(L>@ z^au1PG^q_BD`DzUzf0l+-62c-DpUM7{s%!3h~K5*+5SS`w~*~QfAl*D1O@-_ks!d# z09em{{{w=;A^(b^_V45r-%VNhnfGJI!9UHjP;{@sga4`?LH@He=D$|#U-B)KmD!!k z2yHor)(HWP5Tz}lzN1{~(2F)I0W{!uSrU~1Di0io{Zb6&Y=;&zP*-FDCM-08IFS2@ z1J`4U4^QY)`|*16uUJafUL-=xACa&!k;xeJ~?3 zUQT_>^Y#Hd!;4#7N$+cw$*fnNAO;%0x_eGeTFjG`XUI?1Gupq~q?yj0y-92Kwye0? zE$|y>kk2Wv3fWX+=*h~daXhAyXDWm2hv9@V;`2!w9qjd|8a3*)t+!lahc|Owcg1ZtB((RV(;pfKnsFz9X&ZEC6hq7teaB`En}uP5_ojm^UlZ- zx`0bx9Xs!*3*I;v;?9(KthD3eD+f_UqNijl^cQ7=2yD}2&RzD9db-IUu4(9Y*R@Jj ziH82ZliA?)rE@;!oZ1JR^!TCgWw`Iq@sS_# zdvRD)EQ;Sch-#^sRii~Rjb~Uzlxp%!W!%g6WQX}1?eKX_!#o9FEf(-ZH$=P{9Anol zNb$NCci3jXy-Wzr+7gayg;Kg?FAm+P`V`Cicf!?)>NHZb6rZ-_^BK=%sAf9Eweo)+ zzfEvP`F3&NK|-akB@vl#%bIM?C6_G|AK)#J?w^q^bY~i3i!qUHkWjU?B_oNsGyX`# zNwtHm?h}rac%6;>4ZV^kxm(XGt=tK&@$05X5=+r;p5OG}^w=acGv<-TmdC)*J>ont z_)e-F9p&rqf8m}o9_DTL9?%hp7~Sgo6l*;ki9>3W6o+GW3_MQ7E-JFLPnzlE2&wP@ zf~sLqIpOx$D~eOAepf@!?2{BQr}nPhGyxPns$8`*1b-7+n|6uCq16`PX z!m@^hT@Uw~tu<+p*}wupEpPZO!rm{jZOf&2w+9u-WHwih^{I%FUqI0MKK4ytIX!*o zhR1yIZChpwihI6xWMhpugUAOD3dEsti&=!)A|YDVd{znUn?`5F)2XOWP(NsT*D!3h zG(?`aS?*PX6H6`IX7WyE<`%_`QL$7TF#avtve@!S7XHsHhsF)7N}V1|Bd$(b7x@&3 z&E2Zd&1{J8e@Aof(^y35YD}+*n$5e}h;}9NX=3XPmsOJFgs_XeA~x-Z4ukaZJQG`F zJ{D~Rs!w|0nTlw80O!ZIZtySg-wZwsjcK-wQu*;i`UwD@==dfF#w2H(!=R=31bWt;?sE`5?X#Zx(+L6Brk?JnK7H;)NsOuf zw8vA#VfHcqdwCi2y01m~+AnoFfCv~n37p0b_qr~z8rri39&jFRyO!GT_TUk-WAj~` z{n7>k14~Vk`dc2&3$VC09V^GdvL*k5Lm^+YEM;vDk1zUewW>`{g}jyZd6s)2EE>OK zx3RYklKYV!2t({}sj<{i&Se8!YS#GuE;=$VK_(I(@I}P0J87Ts1uGh`MCO0d!#Qq$ ztzk|^G-iO>CpX-xdB`+mf zx;>PLyHmupr1(*X@)l*0b_&7G3ndKH*W%W0b=?WP!g8Hu#O1V>*VZ%P>ANedW-*vsxn97{zFakcAj78R$Bsx(jM%aYkBx|=0NPUX3{Mkt6GKf z^ZEC=j6NI)jEo$RyfTq4KYpS>Nv32>(nSvUixka`#~E%MCh?0BCX2FXgOU`g4u!Q{ zrM?+zuOTzrep5)4LU?h}Rmt3R>{BCEj?w-a-ah-QB%gS0Bp<*@%~%pTM-|?NE+a=&*zDX0pk^d9%K9` zn`iT%D$(rsgXht{6wJ%@+z`K;d;S%lu-gJl1FJyc0rS=D^-rhHp1ou?d0DSFz|>{m z^kJ>KW0w+y($e#mFX*p0F&8e6W*X!TxJec&q?{$^&J!leyI79Ll$RVd5X4-VaZagN z^2$p_dB;`u*0~#E<39UplBh(a*Z1E}4KRQ>F;)0d-|#N@=unsQl1kxJ0_ZL46)uSq z;&+aQ%O|2|Q;#e1X&*jcLR_|Rz^gd&;=}vTEXK&(+Hm)EGn02q^?&l!5_maeq<+V{ zec(*b@kF;Ag1ouWDn2S>w-5QJI>_~t*P_p+&pLdq2rxO8J6PpHX1L3cgrU@mJ#6Ws z@STAke(~~Jr>m$|S%{UMSa_(z(6m`;S(stx*ubT)dxyJ$1 zjU?Z*n#L~%<74~NvW=?DEkBfow0YAq*a!D%d@vmMdbWDQ@Q87ZlldqGPh8&wRk{J> z_+!>DY{8OcgKjC_-5*GaABPl2*tI+@y53?TyZq`%-GyH2i_M)}e#e9tT6I^8VW;}< zNaa3#YuiqK#=h%%B;r`)5N=p+uDSQYpvF;OH+dcLf`h(ZcoK8cob-g^BDY_Cw0YAW z??EuT*3x*+BPFz1$tL>|)IyWJU$=|AlC;w9M3Bwukh?=nwjJJCBgPj`>x+|OnBqq& zb0QjYOy2qsIbJZJ+jni^@)_TZZ~0oEIv%8Vx-?y9*vG1e2zMSZU}+-S?;3uCS+~mR z-b0%#?kQv4^k$K}47jVR)$%LyiZ3YbK3NY%1n?rHXL>6i)t$3~GS4a;ExN4CD1J3VXY;=MptX=!?j=!qrD(?`Vr0jN0d>)FWe2`n-gb zUrLee!>gy$5mp{?mRae~J4uvu%;bq5!iE&YjbFN{0yO!a?S1|Qxh%6c-%Tfc$re+0 zXwk&0@|AoixC)|GA~>nao!8In+QXofPgFFRF3glsLRT>0Fx6(^-V@5|H5D(H7OWrl zrfZCJ$=i1zZxE@{wD3X>s>;3y5y|2);tbQj`7S%FndB==*rMniF)dxqSFi4$sZfnf z((^d7!e`-kr6c%S*5L;&`)aH$*O%(Er8_koOgoH zjfDH>TjNg@+F7{yyUJ$*wU_&2`l=;tB$V2!7vJ-m8NNz!d&cAK=`vl& zkzARSZL#Kc1sWl7eZcx^lN&oi4Qy~6N8m=_Qt9%gcO1mTNOBl>HFnrrjpd zHn{mm>pBoJXuDjj8-t_)+7&+X(gVJ>c9Nz=cZT+4$@}9e&K=!9zRuh@^jyV~O7T$2y~wC)4_604 z5dpAFO)_Lql-YOVERN$jh+z-Sx&UWf1>``kg(`4r&)90-NAs5Z4Wm;={EG~Ftd+)H`lVSVYouqP=M%A;aQpGa zUjP~c_T$?@Lm2pvfQG=Y&^%j<)^hT$=uj z8vd?B6B^e<;ht!RCNwCBPN7_w(C`X6g>qqn{)(!iY7a*18t7{%rzIFVRKyOaCDU0+wH+tHV3p)3Gx&0J(iNXWTShlOHYJo_ z8#^VW%l!E*5#2}b(aZZum!I>FH{25}@oT23Z-U%y z;{(#;QtH*d3lXP88)W?ZtZhbAIcoiL?@UR}3nAI~obTy2YjI?8NKbf~$L1bbe{vPs zb;R#+NL61oZ&=4>n}4pUaQz2F-s%0^T24nqKDD|d9Iu#_vJ0HEw#_OPdEC)+m9Sgm zSd}A`s@b`8yoT&Hxgw=OpnL`;ubcF@Bk@@Ww~Qh^-_kuP_>`?{{l)~+g?9@AXMoMn zi%_$ATC4KBD00R>;dZ1ec2j~W%IEsyE|rp`6AvGKPAXw=O?`JnJn-60VMn`(5Zqci z?b~LF@hLT?gWbozwk{Q63wJ;m^u5W)h@AlB%kQz>t1o0U;&RINL*EnXN}Tz2R8{)q z<`;{W)|;ZM%@O;C&NbJBP}!Td*f?hMB<3Ei*9Z}5lH`iwP!+VQA9$hVEq)|deR_Ex ztb-+ax2o;&!~$?H+^)#%6y4=xP2~Begh$(tK|kU#rQDNE2ZKT?{oe>0PRb-+`w~zq zTKiw_!r3tzWCY859%)-~M1`N-O;I4sI-P;y*f< zWE0XEOMVE5Fr>iH^o3c?^nLWoTxrATcH1aOx@Nr|=ZtTkFCfCthwK zrPe~*_1?4Dsyr@JaELCt6QjsQ*EpjKT3$8HlMHnM4<;qpSIp84Yi1gmMpb0>w`%g- z5Ss6J2?R%cquqr#9J=K7Oph#IV{8-m{!Qo8*sZnQ%I7bT(jhy-^C141kdEqKUY$ZVE|d?_x&9PLhgP-h~AJ;I~J-e7`>W*PXRj}dK&MvA%*RcF$Q!0 zdL>Cy$4PYM!+^Fkj&)!?$6V|?#eCmyZ~@s_liD>pvl|pd+0lxmI9Yt53}t-O!zV9Z zU@={9zH=DzifyfQ)-Nx2(xwZZ*!18;?vu0)+xmCsLUfaA4>{!9o*)`p6F8XelCpdyXTvc-)QImZT3B9A9V{Q$pNlAW%1yzQym2sWKV9iN zu#c%;LmOD$ZL1f4;@hO;!{c`AxFY2WunTDiG8Bmtt}<#mvpy`YU{_9z3ady+IQb+94^U{cVZCMpMt%R!BYF>Ah;AlZLx) zw);exCC4Ik{fzw!!FRsK(cS0!(yP9FCdQbHauiOIStI{0$i`|Gv7g~&9`ZFvTS)-H)2wzsIEP(9q)X@D?L>Et;qSpW$jf(mEI^r4ulHn zD;e@K@o@Fy} z4e#*DY?$u;>PL46?ei4Re?Cq`b2@c}s55+>M*nlcScXToV#~mX{cZCV^A#N<95t4( z(sX8rKIGxDsP$aelDJZMJ%Z$Esgag-qkPFQLPS6B1WjN+*ozX1T&vZ;diSjR1?g4! z=Hk`NsIqxOrctMqO0jiPyM~y3#^plPlyl*x$$`@sO=ISdimma``cx!7TbxOlQhy(G zMhLH;M6PAYHQa$^vec^~UuOJ;;{Hbk!;B;z_fBzH?ol!H^*?vzGeoq^Qn`6F38m)W?PS|x1t7W=D8 zMh`Ypu4Vus_ztxo)-RI-z}6v`%;#dXqPm`tDNc(^PduU!#Za#_y1)&UIX3Uh@0-4| z-wCcPkoSbv%z4gTpNpdkaFz|%2+P2UkgJ$d4LL8#)p+Tn;VnPLZvV4ew5E2_nGsSO z#h`&J9dbu7a^QB2YRBu;^p) z`2XEd&|mRe&jWB+1Tc$tHz!ViJit%nB7+h2okl}ay77j(AEOvM1AwXEaMTkJ)z@o9E98y#i6^n0Y9ukHM zV6;6D;17-p#@Iqrcx1Xej<@S=2~9nS^MQLx(&3Xt$)mV?4k zIN;9TLPdcYzB3Ojiolv5V1x+3zK2l`0Yybh*l|B#DM7KZ?Z|_`z@nIShQNTv!YYS= zW3)YR&;r5ib080f;(*`r45$bKfmuH&F#Ir|3k8W{=Yd7A>I{X5Vy=mR_mT+aI)utY z1-#u^7bvguC{|kmR_IvkGpc*Bo(l);Lox3MtZSHK z5(-D6(Bz%<69r?Adk_?`O~GnsU`fP!1~7Cn>jKmcYm5V<0ISY05CW?WfO(14eyFL1 z*`~l=hk}ZBya(W41Q;4)=0UOA00uk+v+aT2Kw!2DkcC3!cRmAq-39g!DAsxaSes#u zD;N@cT)~jQDvS9HKtRNNH#pFwm~{q5Jyu`BffW_29I)PFu!j6SUQfI|>i>joTxL}2z2916iM2gJa_DhG$7&OUbZ2ON&T+CSjHQis`Z za8U>xbG?F#q7W#I`-#G_<|?2V?w7~33VAsda1LhHC{X~In5c55NUt+D#qA*}l#H=46 zZeY~~=wQt83`m$LF7%!6yUSjS+M+P~4d@Q6F)50`9vh+vQ7m~)6oEbdM3G=D`45;0 zSZlE;5{|VFi2|4`R{J55SnDJLaE8F_b0i#r)#t#}hhw%Cu=-)GO@I`OH5ZTwK$5^{ zQzQa}HTQuQz>)=!ND-_(8Ht2o&Ou-YMV~)z?>E%0iuqiy$al8Zo#jA)j8ZH4MO25JL?ArW3GQdP;Fq5#ViL5 zU98_CASh0So%aLADMo()_d{T=f2i4uxo!Y?Ak1+OpkGuIuo!W zVvR{aJiuI=fY$(|bj;@h;yq^DLjarsv(6Bp?J?^D5rJZj0|+o#G4=`ocmSiY#T{(` zND(4f_X9c!t1e&|)?9@EdKBjPgFt~D1oIg%D5jhPsNF~e=J*3z1#7K?h=MTXCSZUg zG51wKuLUM1=5qm28FL&!fh8NW4FIhc6MF!h?XYkfAP?BRF`fYgQN_d$0BIb7wY~u2 z8m8iD>w$L5Byn>$b9G0 Date: Mon, 23 Sep 2024 12:49:59 -0700 Subject: [PATCH 54/54] rm space and fix numbering --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8fe5163..d5fabec 100644 --- a/README.md +++ b/README.md @@ -71,16 +71,14 @@ These instructions will get you a copy of the project up and running on your loc > - See [Get Started with the Canvas API](https://learninganalytics.ubc.ca/guides/get-started-with-the-canvas-api/) for more information. > - ⚠️ Your Canvas API token is the equivalent to your username and password and must be treated as such (following any security guidelines of your home institution). 1. Create a `.env` file. -1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. > - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` - > - At another institution it might be something like `https://{school}.instructure.com/api/v1` - - +1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. + - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` + - At another institution it might be something like `https://{school}.instructure.com/api/v1` Your .env file should look like ``` CANVAS_API_TOKEN=22322... CANVAS_API_DOMAIN=https://ubc.instructure.com/api/v1 COURSE_IDS=1111,1112 - INCLUDE_MODULE_SUMMARY=false ``` 2. Run the script. `npm start`. 3. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id.

*Cs{MU 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 z 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