├── .env.example ├── .eslintrc.json ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── components ├── Button.tsx ├── Chat.tsx ├── ChatLine.tsx ├── Pinecone.tsx └── Spinner.tsx ├── next-env.d.ts ├── package.json ├── pages ├── _app.tsx ├── api │ ├── chat.ts │ ├── context.ts │ ├── pinecone.ts │ └── seed.ts └── index.tsx ├── pnpm-lock.yaml ├── postcss.config.js ├── public └── favicon.ico ├── seed ├── crawler.ts ├── seed.ts └── summarizer.ts ├── tailwind.config.js ├── tsconfig.json ├── turbo.json ├── utils ├── OpenAICompletion.ts ├── OpenAIEmbedding.ts ├── OpenAIStream.ts └── TextSplitter.ts └── vercel.json /.env.example: -------------------------------------------------------------------------------- 1 | # Created by Vercel CLI 2 | OPENAI_API_KEY= 3 | # The temperature controls how much randomness is in the output 4 | AI_TEMP=0.7 5 | # The size of the response 6 | AI_MAX_TOKENS=100 7 | OPENAI_API_ORG= 8 | 9 | PINECONE_API_KEY= 10 | PINECONE_ENVIRONMENT= 11 | PINECONE_INDEX= -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": "next/core-web-vitals" 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # Testing 9 | /coverage 10 | 11 | # Next.js 12 | /.next/ 13 | /out/ 14 | 15 | # Production 16 | build 17 | dist 18 | 19 | # Misc 20 | .DS_Store 21 | *.pem 22 | 23 | # Debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # Local ENV files 29 | .env.local 30 | .env.development.local 31 | .env.test.local 32 | .env.production.local 33 | 34 | # Vercel 35 | .vercel 36 | 37 | # Turborepo 38 | .turbo 39 | 40 | # typescript 41 | *.tsbuildinfo 42 | 43 | .env -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "dotenv.enableAutocloaking": false 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AI Chat GPT-3 example 2 | 3 | This example shows how to implement a chat bot backed by Pinecone using Next.js, API Routes, and [OpenAI ChatGPT API](https://beta.openai.com/docs/api-reference/completions/create). 4 | 5 | ### Components 6 | 7 | - Next.js 8 | - OpenAI API (ChatGPT) - streaming 9 | - API Routes (Edge runtime) - streaming 10 | - Pinecone store 11 | 12 | ## How to Use 13 | 14 | You can choose from one of the following two methods to use this repository: 15 | 16 | ### One-Click Deploy 17 | 18 | Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme&utm_campaign=vercel-examples): 19 | 20 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vercel/examples/tree/main/solutions/ai-chatgpt&project-name=ai-chatgpt&repository-name=ai-chatgpt&env=OPENAI_API_KEY) 21 | 22 | ### Clone and Deploy 23 | 24 | Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [pnpm](https://pnpm.io/installation) to bootstrap the example: 25 | 26 | ```bash 27 | pnpm create next-app --example https://github.com/vercel/examples/tree/main/solutions/ai-chatgpt 28 | ``` 29 | 30 | #### Set up environment variables 31 | 32 | Rename [`.env.example`](.env.example) to `.env.local`: 33 | 34 | ```bash 35 | cp .env.example .env.local 36 | ``` 37 | 38 | Update `OPENAI_API_KEY` with your [OpenAI](https://beta.openai.com/account/api-keys) secret key. 39 | Update `PINECONE_API_KEY` with your [Pinecone](https://www.pinecone.io/start/) secret key, and `PINECONE_ENVIRONMENT` with your Pinecone environment name. 40 | Choose a `PINECONE_INDEX` name for your index. If the index does not exist, it will be created automatically. 41 | 42 | Next, run Next.js in development mode: 43 | 44 | ```bash 45 | pnpm dev 46 | ``` 47 | 48 | The app should be up and running at http://localhost:3000. 49 | 50 | Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=edge-middleware-eap) ([Documentation](https://nextjs.org/docs/deployment)). 51 | -------------------------------------------------------------------------------- /components/Button.tsx: -------------------------------------------------------------------------------- 1 | import clsx from "clsx"; 2 | 3 | export function Button({ className, ...props }: any) { 4 | return ( 5 | 44 | 45 | ) 46 | 47 | export function Chat() { 48 | const [messages, setMessages] = useState(initialMessages) 49 | const [input, setInput] = useState('') 50 | const [loading, setLoading] = useState(false) 51 | const [cookie, setCookie] = useCookies([COOKIE_NAME]) 52 | 53 | useEffect(() => { 54 | if (!cookie[COOKIE_NAME]) { 55 | // generate a semi random short id 56 | const randomId = Math.random().toString(36).substring(7) 57 | setCookie(COOKIE_NAME, randomId) 58 | } 59 | }, [cookie, setCookie]) 60 | 61 | // send message to API /api/chat endpoint 62 | const sendMessage = async (message: string) => { 63 | setLoading(true) 64 | const newMessages = [ 65 | ...messages, 66 | { role: 'user', content: message } as ChatGPTMessage, 67 | ] 68 | setMessages(newMessages) 69 | const last10messages = newMessages.slice(-10) // remember last 10 messages 70 | 71 | const response = await fetch('/api/chat', { 72 | method: 'POST', 73 | headers: { 74 | 'Content-Type': 'application/json', 75 | }, 76 | body: JSON.stringify({ 77 | messages: last10messages, 78 | user: cookie[COOKIE_NAME], 79 | }), 80 | }) 81 | 82 | console.log('Edge function returned.') 83 | 84 | if (!response.ok) { 85 | throw new Error(response.statusText) 86 | } 87 | 88 | // This data is a ReadableStream 89 | const data = response.body 90 | if (!data) { 91 | return 92 | } 93 | 94 | const reader = data.getReader() 95 | const decoder = new TextDecoder() 96 | let done = false 97 | 98 | let lastMessage = '' 99 | 100 | while (!done) { 101 | const { value, done: doneReading } = await reader.read() 102 | done = doneReading 103 | const chunkValue = decoder.decode(value) 104 | 105 | lastMessage = lastMessage + chunkValue 106 | 107 | setMessages([ 108 | ...newMessages, 109 | { role: 'assistant', content: lastMessage } as ChatGPTMessage, 110 | ]) 111 | 112 | setLoading(false) 113 | } 114 | } 115 | 116 | return ( 117 |
118 | {messages.map(({ content, role }, index) => ( 119 | 120 | ))} 121 | 122 | {loading && } 123 | 124 | {messages.length < 2 && ( 125 | 126 | Type a message to start the conversation 127 | 128 | )} 129 | 134 |
135 | ) 136 | } 137 | -------------------------------------------------------------------------------- /components/ChatLine.tsx: -------------------------------------------------------------------------------- 1 | import clsx from 'clsx' 2 | import Balancer from 'react-wrap-balancer' 3 | 4 | // wrap Balancer to remove type errors :( - @TODO - fix this ugly hack 5 | const BalancerWrapper = (props: any) => 6 | 7 | type ChatGPTAgent = 'user' | 'system' | 'assistant' 8 | 9 | export interface ChatGPTMessage { 10 | role: ChatGPTAgent 11 | content: string 12 | } 13 | 14 | // loading placeholder animation for the chat line 15 | export const LoadingChatLine = () => ( 16 |
17 |
18 |
19 |

20 | 21 | AI 22 | 23 |

24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | ) 35 | 36 | // util helper to convert new lines to
tags 37 | const convertNewLines = (text: string) => 38 | text.split('\n').map((line, i) => ( 39 | 40 | {line} 41 |
42 |
43 | )) 44 | 45 | export function ChatLine({ role = 'assistant', content }: ChatGPTMessage) { 46 | if (!content) { 47 | return null 48 | } 49 | const formatteMessage = convertNewLines(content) 50 | 51 | return ( 52 |
57 | 58 |
59 |
60 |
61 |

62 | 63 | {role == 'assistant' ? 'AI' : 'You'} 64 | 65 |

66 |

72 | {formatteMessage} 73 |

74 |
75 |
76 |
77 |
78 |
79 | ) 80 | } 81 | -------------------------------------------------------------------------------- /components/Pinecone.tsx: -------------------------------------------------------------------------------- 1 | import clsx from "clsx"; 2 | import { Button } from "./Button"; 3 | import React from "react"; 4 | import { Spinner } from "./Spinner"; 5 | 6 | export function Pinecone({ className, ...props }: any) { 7 | const [entries, setSeeded] = React.useState([ 8 | { 9 | url: "https://vercel.com/docs/concepts/functions/edge-functions/vercel-edge-package", 10 | title: "@vercel/edge Package", 11 | seeded: false, 12 | loading: false, 13 | }, 14 | { 15 | url: "https://docs.pinecone.io/docs/manage-indexes", 16 | title: "Managing Pinecone Indexes", 17 | seeded: false, 18 | loading: false, 19 | }, 20 | { 21 | url: "https://www.espn.com/nfl/story/_/id/37421059/giants-give-dt-dexter-lawrence-90-million-4-year-extension", 22 | title: "Dexter Lawrence 4 year extension", 23 | seeded: false, 24 | loading: false, 25 | }, 26 | ]); 27 | 28 | const getDocument = async (url: string) => { 29 | setSeeded((seeded: any) => 30 | seeded.map((seed: any) => { 31 | if (seed.url === url) { 32 | return { 33 | ...seed, 34 | loading: true, 35 | }; 36 | } 37 | return seed; 38 | }) 39 | ); 40 | const response = await fetch("/api/seed", { 41 | method: "POST", 42 | headers: { "Content-Type": "application/json" }, 43 | body: JSON.stringify({ url }), 44 | }); 45 | const data = await response.json(); 46 | setSeeded((seeded: any) => 47 | seeded.map((seed: any) => { 48 | if (seed.url === url) { 49 | return { 50 | ...seed, 51 | seeded: true, 52 | loading: false, 53 | }; 54 | } 55 | return seed; 56 | }) 57 | ); 58 | }; 59 | 60 | return ( 61 |
62 | {entries.map((entry: any) => { 63 | return ( 64 |
65 | 76 |
77 | ); 78 | })} 79 |
80 | ); 81 | } 82 | -------------------------------------------------------------------------------- /components/Spinner.tsx: -------------------------------------------------------------------------------- 1 | export function Spinner() { 2 | return ( 3 |
4 | 20 | Loading... 21 |
22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ai-chatgpt", 3 | "repository": "https://github.com/vercel/examples.git", 4 | "license": "MIT", 5 | "private": true, 6 | "scripts": { 7 | "dev": "cross-env NODE_OPTIONS='--inspect' next dev", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint" 11 | }, 12 | "dependencies": { 13 | "@pinecone-database/pinecone": "^0.1.6", 14 | "@vercel/analytics": "^0.1.11", 15 | "@vercel/examples-ui": "^1.0.5", 16 | "@viclafouch/fetch-crawler": "^1.0.13", 17 | "cheerio": "^1.0.0-rc.12", 18 | "clsx": "^1.2.1", 19 | "cross-env": "^7.0.3", 20 | "encoding": "^0.1.13", 21 | "eventsource-parser": "^0.1.0", 22 | "next": "latest", 23 | "node-html-markdown": "^1.3.0", 24 | "node-spider": "^1.4.1", 25 | "openai": "^3.2.1", 26 | "react": "latest", 27 | "react-cookie": "^4.1.1", 28 | "react-dom": "latest", 29 | "react-wrap-balancer": "^0.1.5", 30 | "unified": "^8.4.2", 31 | "url-parse": "^1.5.10", 32 | "whacko": "^0.19.1" 33 | }, 34 | "devDependencies": { 35 | "@types/node": "^17.0.45", 36 | "@types/react": "latest", 37 | "@types/url-parse": "^1.4.8", 38 | "autoprefixer": "^10.4.14", 39 | "eslint": "^8.36.0", 40 | "eslint-config-next": "^12.3.4", 41 | "postcss": "^8.4.21", 42 | "tailwindcss": "^3.2.7", 43 | "turbo": "^1.8.3", 44 | "typescript": "^4.9.5" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import type { AppProps } from "next/app"; 2 | import { Analytics } from "@vercel/analytics/react"; 3 | import type { LayoutProps } from "@vercel/examples-ui/layout"; 4 | 5 | import { getLayout } from "@vercel/examples-ui"; 6 | 7 | import "@vercel/examples-ui/globals.css"; 8 | 9 | function App({ Component, pageProps }: AppProps) { 10 | const Layout = getLayout(Component); 11 | 12 | return ( 13 | 18 | 19 | 20 | 21 | ); 22 | } 23 | 24 | export default App; 25 | -------------------------------------------------------------------------------- /pages/api/chat.ts: -------------------------------------------------------------------------------- 1 | import { PineconeClient } from '@pinecone-database/pinecone' 2 | import { type ChatGPTMessage } from '../../components/ChatLine' 3 | import { OpenAIStream, OpenAIStreamPayload } from '../../utils/OpenAIStream' 4 | import { initPineconeClient } from './pinecone' 5 | import { getContext } from './context' 6 | 7 | // break the app if any API key is missing 8 | if (!process.env.OPENAI_API_KEY) { 9 | throw new Error('Missing Environment Variable OPENAI_API_KEY') 10 | } 11 | 12 | if (!process.env.PINECONE_API_KEY) { 13 | throw new Error('Missing Environment Variable PINECONE_API_KEY') 14 | } 15 | 16 | if (!process.env.PINECONE_ENVIRONMENT) { 17 | throw new Error('Missing Environment Variable PINECONE_ENVIRONMENT') 18 | } 19 | 20 | if (!process.env.PINECONE_INDEX) { 21 | throw new Error('Missing Environment Variable PINECONE_INDEX') 22 | } 23 | 24 | export const config = { 25 | runtime: 'edge', 26 | } 27 | 28 | const handler = async (req: Request): Promise => { 29 | const pinecone = await initPineconeClient(); 30 | 31 | const body = await req.json() 32 | 33 | try { 34 | // Get the last message 35 | const lastMessage = body?.messages[body?.messages.length - 1] 36 | const context = await getContext(lastMessage.content, pinecone, 'documents') 37 | 38 | console.log(context) 39 | 40 | const messages: ChatGPTMessage[] = [ 41 | { 42 | role: 'system', 43 | content: `An AI assistant that is an expert developer, specialized in Pinecone and Vercel have an inspiring and humorous conversation. 44 | AI assistant is a brand new, powerful, human-like artificial intelligence. 45 | The traits of AI include expert knowledge, helpfulness, cheekiness, comedy, cleverness, and articulateness. 46 | AI is a well-behaved and well-mannered individual. 47 | AI is not a therapist, but instead an engineer. 48 | AI is always friendly, kind, and inspiring, and he is eager to provide vivid and thoughtful responses to the user. 49 | AI has the sum of all knowledge in their brain, and is able to accurately answer nearly any question about any topic in conversation. 50 | AI assistant is a big fan of Pinecone and Next.js. 51 | AI assistant will response based on the given context. The context for the response is the following: ${context} 52 | AI assistant will not invent anything that is not drawn directly from the context.`, 53 | }, 54 | ] 55 | messages.push(...body?.messages) 56 | 57 | const payload: OpenAIStreamPayload = { 58 | model: 'gpt-3.5-turbo', 59 | messages: messages, 60 | temperature: process.env.AI_TEMP ? parseFloat(process.env.AI_TEMP) : 0.7, 61 | max_tokens: process.env.AI_MAX_TOKENS 62 | ? parseInt(process.env.AI_MAX_TOKENS) 63 | : 100, 64 | top_p: 1, 65 | frequency_penalty: 0, 66 | presence_penalty: 0, 67 | stream: true, 68 | user: body?.user, 69 | n: 1, 70 | } 71 | 72 | const stream = await OpenAIStream(payload) 73 | return new Response(stream) 74 | } catch (e) { 75 | return new Response(null) 76 | } 77 | 78 | 79 | 80 | 81 | } 82 | export default handler 83 | -------------------------------------------------------------------------------- /pages/api/context.ts: -------------------------------------------------------------------------------- 1 | import { PineconeClient } from "@pinecone-database/pinecone"; 2 | import { OpenAIEmbedding } from "../../utils/OpenAIEmbedding"; 3 | import { Metadata, getMatchesFromEmbeddings } from "./pinecone"; 4 | 5 | export const getContext = async (message: string, pinecone: PineconeClient, namespace: string, maxTokens = 3000) => { 6 | const embedding = await OpenAIEmbedding(message) 7 | const matches = await getMatchesFromEmbeddings(embedding, pinecone!, 1, namespace) 8 | 9 | const docs = matches && Array.from( 10 | matches.reduce((map, match) => { 11 | const metadata = match.metadata as Metadata; 12 | const { text, url } = metadata; 13 | if (!map.has(url)) { 14 | map.set(url, text); 15 | } 16 | return map; 17 | }, new Map()) 18 | ).map(([_, text]) => text); 19 | 20 | console.log("matches", matches) 21 | 22 | return docs.join("\n").substring(0, maxTokens) 23 | } -------------------------------------------------------------------------------- /pages/api/pinecone.ts: -------------------------------------------------------------------------------- 1 | import { PineconeClient, ScoredVector } from "@pinecone-database/pinecone"; 2 | import { IndexMeta, Vector, VectorOperationsApi } from "@pinecone-database/pinecone/dist/pinecone-generated-ts-fetch"; 3 | 4 | export type Metadata = { 5 | url: string, 6 | text: string, 7 | chunk: string, 8 | } 9 | 10 | let pinecone: PineconeClient | null = null; 11 | 12 | export const initPineconeClient = async () => { 13 | if (!pinecone) { 14 | pinecone = new PineconeClient(); 15 | await pinecone.init({ 16 | environment: process.env.PINECONE_ENVIRONMENT!, 17 | apiKey: process.env.PINECONE_API_KEY!, 18 | }); 19 | } 20 | return pinecone 21 | } 22 | 23 | export const waitUntilIndexIsReady = async ( 24 | client: PineconeClient, 25 | indexName: string 26 | ) => { 27 | try { 28 | const indexDescription: IndexMeta = await client.describeIndex({ 29 | indexName, 30 | }); 31 | // @ts-ignore 32 | if (!indexDescription.status?.ready) { 33 | process.stdout.write("."); 34 | await new Promise((r) => setTimeout(r, 1000)); 35 | await waitUntilIndexIsReady(client, indexName); 36 | } else { 37 | return; 38 | } 39 | } catch (e) { 40 | console.error("Error waiting until index is ready", e); 41 | } 42 | }; 43 | 44 | // Creates an index if it doesn't exist 45 | export const createIndexIfNotExists = async ( 46 | client: PineconeClient, 47 | indexName: string, 48 | dimension: number 49 | ) => { 50 | try { 51 | const indexList = await client.listIndexes(); 52 | if (!indexList.includes(indexName)) { 53 | console.log("Creating index", indexName); 54 | await client.createIndex({ 55 | createRequest: { 56 | name: indexName, 57 | dimension, 58 | }, 59 | }); 60 | console.log("Waiting until index is ready..."); 61 | await waitUntilIndexIsReady(client, indexName); 62 | console.log("Index is ready."); 63 | } 64 | } catch (e) { 65 | console.error("Error creating index", e); 66 | } 67 | }; 68 | 69 | const sliceIntoChunks = (arr: T[], chunkSize: number) => { 70 | return Array.from({ length: Math.ceil(arr.length / chunkSize) }, (_, i) => 71 | arr.slice(i * chunkSize, (i + 1) * chunkSize) 72 | ); 73 | }; 74 | 75 | // Upserts vectors into the index in chunks 76 | export const chunkedUpsert = async ( 77 | index: VectorOperationsApi, 78 | vectors: Vector[], 79 | namespace: string, 80 | chunkSize = 10 81 | ) => { 82 | // Split the vectors into chunks 83 | const chunks = sliceIntoChunks(vectors, chunkSize); 84 | 85 | try { 86 | // Upsert each chunk of vectors into the index 87 | await Promise.allSettled( 88 | chunks.map(async (chunk) => { 89 | try { 90 | await index.upsert({ 91 | upsertRequest: { 92 | vectors: chunk as Vector[], 93 | namespace, 94 | }, 95 | }); 96 | } catch (e) { 97 | console.log("Error upserting chunk", e); 98 | } 99 | }) 100 | ); 101 | 102 | return true; 103 | } catch (e) { 104 | throw new Error(`Error upserting vectors into index: ${e}`); 105 | } 106 | }; 107 | 108 | const getMatchesFromEmbeddings = async (embeddings: number[], pinecone: PineconeClient, topK: number, namespace: string): Promise => { 109 | const indexes = await pinecone.listIndexes() 110 | 111 | console.log(indexes.includes(process.env.PINECONE_INDEX!)) 112 | 113 | if (!indexes.includes(process.env.PINECONE_INDEX!)) { 114 | return [] 115 | } 116 | 117 | 118 | const index = pinecone!.Index(process.env.PINECONE_INDEX!); 119 | const queryRequest = { 120 | vector: embeddings, 121 | topK, 122 | includeMetadata: true, 123 | namespace 124 | } 125 | try { 126 | const queryResult = await index.query({ 127 | queryRequest, 128 | }) 129 | console.log(queryResult) 130 | return queryResult.matches?.map(match => ({ 131 | ...match, 132 | metadata: match.metadata as Metadata 133 | })) || [] 134 | } catch (e) { 135 | console.log("Error querying embeddings: ", e) 136 | throw (new Error(`Error querying embeddings: ${e}`,)) 137 | } 138 | } 139 | 140 | export { getMatchesFromEmbeddings } -------------------------------------------------------------------------------- /pages/api/seed.ts: -------------------------------------------------------------------------------- 1 | import seed from "../../seed/seed" 2 | import { NextRequest, NextResponse } from 'next/server'; 3 | 4 | 5 | export const config = { 6 | runtime: 'edge', // this is a pre-requisite 7 | } 8 | 9 | const handler = async (req: NextRequest, res: NextResponse) => { 10 | const { url } = await new Response(req.body).json(); 11 | await seed(url, 1, process.env.PINECONE_INDEX!, false) 12 | return NextResponse.json({ message: "done" }) 13 | } 14 | 15 | export default handler -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { Layout, Text, Page } from "@vercel/examples-ui"; 2 | import { Chat } from "../components/Chat"; 3 | import { Pinecone } from "../components/Pinecone"; 4 | 5 | function Home() { 6 | return ( 7 | 8 |
9 | Pinecone with OpenAI usage example 10 | 11 | In the example provided, we've crafted a straightforward chatbot 12 | utilizing the capabilities of Next.js, OpenAI and Pinecone. This 13 | chatbot serves as an interactive tool, ready to answer your inquiries 14 | about the topics listed below. To initiate the conversation, start by 15 | posing a question to the bot. 16 | 17 | 18 | Then, you can enhance the chatbot's understanding by clicking the 19 | respective buttons to seed relevant information into the Pinecone 20 | index. Once the index is updated, pose a similar question to the bot 21 | to witness its improved comprehension and response accuracy. 22 | 23 |
24 | 25 |
26 | 27 |
28 | 29 |
30 |
31 |
32 | ); 33 | } 34 | 35 | Home.Layout = Layout; 36 | 37 | export default Home; 38 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@pinecone-database/pinecone': ^0.1.6 5 | '@types/node': ^17.0.45 6 | '@types/react': latest 7 | '@types/url-parse': ^1.4.8 8 | '@vercel/analytics': ^0.1.11 9 | '@vercel/examples-ui': ^1.0.5 10 | '@viclafouch/fetch-crawler': ^1.0.13 11 | autoprefixer: ^10.4.14 12 | cheerio: ^1.0.0-rc.12 13 | clsx: ^1.2.1 14 | cross-env: ^7.0.3 15 | encoding: ^0.1.13 16 | eslint: ^8.36.0 17 | eslint-config-next: ^12.3.4 18 | eventsource-parser: ^0.1.0 19 | next: latest 20 | node-html-markdown: ^1.3.0 21 | node-spider: ^1.4.1 22 | openai: ^3.2.1 23 | postcss: ^8.4.21 24 | react: latest 25 | react-cookie: ^4.1.1 26 | react-dom: latest 27 | react-wrap-balancer: ^0.1.5 28 | tailwindcss: ^3.2.7 29 | turbo: ^1.8.3 30 | typescript: ^4.9.5 31 | unified: ^8.4.2 32 | url-parse: ^1.5.10 33 | whacko: ^0.19.1 34 | 35 | dependencies: 36 | '@pinecone-database/pinecone': 0.1.6_encoding@0.1.13 37 | '@vercel/analytics': 0.1.11_react@18.2.0 38 | '@vercel/examples-ui': 1.0.5_o6dt4yn4syzkhlixdxt4y57rzi 39 | '@viclafouch/fetch-crawler': 1.0.13_encoding@0.1.13 40 | cheerio: 1.0.0-rc.12 41 | clsx: 1.2.1 42 | cross-env: 7.0.3 43 | encoding: 0.1.13 44 | eventsource-parser: 0.1.0 45 | next: 13.4.3_biqbaboplfbrettd7655fr4n2y 46 | node-html-markdown: 1.3.0 47 | node-spider: 1.4.1 48 | openai: 3.2.1 49 | react: 18.2.0 50 | react-cookie: 4.1.1_react@18.2.0 51 | react-dom: 18.2.0_react@18.2.0 52 | react-wrap-balancer: 0.1.5_react@18.2.0 53 | unified: 8.4.2 54 | url-parse: 1.5.10 55 | whacko: 0.19.1 56 | 57 | devDependencies: 58 | '@types/node': 17.0.45 59 | '@types/react': 18.2.6 60 | '@types/url-parse': 1.4.8 61 | autoprefixer: 10.4.14_postcss@8.4.23 62 | eslint: 8.41.0 63 | eslint-config-next: 12.3.4_5ujgynla27k2qkzlnkldjwsutm 64 | postcss: 8.4.23 65 | tailwindcss: 3.3.2 66 | turbo: 1.9.8 67 | typescript: 4.9.5 68 | 69 | packages: 70 | 71 | /@alloc/quick-lru/5.2.0: 72 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 73 | engines: {node: '>=10'} 74 | dev: true 75 | 76 | /@babel/runtime/7.21.5: 77 | resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} 78 | engines: {node: '>=6.9.0'} 79 | dependencies: 80 | regenerator-runtime: 0.13.11 81 | dev: true 82 | 83 | /@eslint-community/eslint-utils/4.4.0_eslint@8.41.0: 84 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 85 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 86 | peerDependencies: 87 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 88 | dependencies: 89 | eslint: 8.41.0 90 | eslint-visitor-keys: 3.4.1 91 | dev: true 92 | 93 | /@eslint-community/regexpp/4.5.1: 94 | resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} 95 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 96 | dev: true 97 | 98 | /@eslint/eslintrc/2.0.3: 99 | resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} 100 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 101 | dependencies: 102 | ajv: 6.12.6 103 | debug: 4.3.4 104 | espree: 9.5.2 105 | globals: 13.20.0 106 | ignore: 5.2.4 107 | import-fresh: 3.3.0 108 | js-yaml: 4.1.0 109 | minimatch: 3.1.2 110 | strip-json-comments: 3.1.1 111 | transitivePeerDependencies: 112 | - supports-color 113 | dev: true 114 | 115 | /@eslint/js/8.41.0: 116 | resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} 117 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 118 | dev: true 119 | 120 | /@humanwhocodes/config-array/0.11.8: 121 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 122 | engines: {node: '>=10.10.0'} 123 | dependencies: 124 | '@humanwhocodes/object-schema': 1.2.1 125 | debug: 4.3.4 126 | minimatch: 3.1.2 127 | transitivePeerDependencies: 128 | - supports-color 129 | dev: true 130 | 131 | /@humanwhocodes/module-importer/1.0.1: 132 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 133 | engines: {node: '>=12.22'} 134 | dev: true 135 | 136 | /@humanwhocodes/object-schema/1.2.1: 137 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 138 | dev: true 139 | 140 | /@jridgewell/gen-mapping/0.3.3: 141 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 142 | engines: {node: '>=6.0.0'} 143 | dependencies: 144 | '@jridgewell/set-array': 1.1.2 145 | '@jridgewell/sourcemap-codec': 1.4.15 146 | '@jridgewell/trace-mapping': 0.3.18 147 | dev: true 148 | 149 | /@jridgewell/resolve-uri/3.1.0: 150 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 151 | engines: {node: '>=6.0.0'} 152 | dev: true 153 | 154 | /@jridgewell/set-array/1.1.2: 155 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 156 | engines: {node: '>=6.0.0'} 157 | dev: true 158 | 159 | /@jridgewell/sourcemap-codec/1.4.14: 160 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 161 | dev: true 162 | 163 | /@jridgewell/sourcemap-codec/1.4.15: 164 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 165 | dev: true 166 | 167 | /@jridgewell/trace-mapping/0.3.18: 168 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 169 | dependencies: 170 | '@jridgewell/resolve-uri': 3.1.0 171 | '@jridgewell/sourcemap-codec': 1.4.14 172 | dev: true 173 | 174 | /@next/env/13.4.3: 175 | resolution: {integrity: sha512-pa1ErjyFensznttAk3EIv77vFbfSYT6cLzVRK5jx4uiRuCQo+m2wCFAREaHKIy63dlgvOyMlzh6R8Inu8H3KrQ==} 176 | dev: false 177 | 178 | /@next/eslint-plugin-next/12.3.4: 179 | resolution: {integrity: sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==} 180 | dependencies: 181 | glob: 7.1.7 182 | dev: true 183 | 184 | /@next/swc-darwin-arm64/13.4.3: 185 | resolution: {integrity: sha512-yx18udH/ZmR4Bw4M6lIIPE3JxsAZwo04iaucEfA2GMt1unXr2iodHUX/LAKNyi6xoLP2ghi0E+Xi1f4Qb8f1LQ==} 186 | engines: {node: '>= 10'} 187 | cpu: [arm64] 188 | os: [darwin] 189 | requiresBuild: true 190 | dev: false 191 | optional: true 192 | 193 | /@next/swc-darwin-x64/13.4.3: 194 | resolution: {integrity: sha512-Mi8xJWh2IOjryAM1mx18vwmal9eokJ2njY4nDh04scy37F0LEGJ/diL6JL6kTXi0UfUCGbMsOItf7vpReNiD2A==} 195 | engines: {node: '>= 10'} 196 | cpu: [x64] 197 | os: [darwin] 198 | requiresBuild: true 199 | dev: false 200 | optional: true 201 | 202 | /@next/swc-linux-arm64-gnu/13.4.3: 203 | resolution: {integrity: sha512-aBvtry4bxJ1xwKZ/LVPeBGBwWVwxa4bTnNkRRw6YffJnn/f4Tv4EGDPaVeYHZGQVA56wsGbtA6nZMuWs/EIk4Q==} 204 | engines: {node: '>= 10'} 205 | cpu: [arm64] 206 | os: [linux] 207 | requiresBuild: true 208 | dev: false 209 | optional: true 210 | 211 | /@next/swc-linux-arm64-musl/13.4.3: 212 | resolution: {integrity: sha512-krT+2G3kEsEUvZoYte3/2IscscDraYPc2B+fDJFipPktJmrv088Pei/RjrhWm5TMIy5URYjZUoDZdh5k940Dyw==} 213 | engines: {node: '>= 10'} 214 | cpu: [arm64] 215 | os: [linux] 216 | requiresBuild: true 217 | dev: false 218 | optional: true 219 | 220 | /@next/swc-linux-x64-gnu/13.4.3: 221 | resolution: {integrity: sha512-AMdFX6EKJjC0G/CM6hJvkY8wUjCcbdj3Qg7uAQJ7PVejRWaVt0sDTMavbRfgMchx8h8KsAudUCtdFkG9hlEClw==} 222 | engines: {node: '>= 10'} 223 | cpu: [x64] 224 | os: [linux] 225 | requiresBuild: true 226 | dev: false 227 | optional: true 228 | 229 | /@next/swc-linux-x64-musl/13.4.3: 230 | resolution: {integrity: sha512-jySgSXE48shaLtcQbiFO9ajE9mqz7pcAVLnVLvRIlUHyQYR/WyZdK8ehLs65Mz6j9cLrJM+YdmdJPyV4WDaz2g==} 231 | engines: {node: '>= 10'} 232 | cpu: [x64] 233 | os: [linux] 234 | requiresBuild: true 235 | dev: false 236 | optional: true 237 | 238 | /@next/swc-win32-arm64-msvc/13.4.3: 239 | resolution: {integrity: sha512-5DxHo8uYcaADiE9pHrg8o28VMt/1kR8voDehmfs9AqS0qSClxAAl+CchjdboUvbCjdNWL1MISCvEfKY2InJ3JA==} 240 | engines: {node: '>= 10'} 241 | cpu: [arm64] 242 | os: [win32] 243 | requiresBuild: true 244 | dev: false 245 | optional: true 246 | 247 | /@next/swc-win32-ia32-msvc/13.4.3: 248 | resolution: {integrity: sha512-LaqkF3d+GXRA5X6zrUjQUrXm2MN/3E2arXBtn5C7avBCNYfm9G3Xc646AmmmpN3DJZVaMYliMyCIQCMDEzk80w==} 249 | engines: {node: '>= 10'} 250 | cpu: [ia32] 251 | os: [win32] 252 | requiresBuild: true 253 | dev: false 254 | optional: true 255 | 256 | /@next/swc-win32-x64-msvc/13.4.3: 257 | resolution: {integrity: sha512-jglUk/x7ZWeOJWlVoKyIAkHLTI+qEkOriOOV+3hr1GyiywzcqfI7TpFSiwC7kk1scOiH7NTFKp8mA3XPNO9bDw==} 258 | engines: {node: '>= 10'} 259 | cpu: [x64] 260 | os: [win32] 261 | requiresBuild: true 262 | dev: false 263 | optional: true 264 | 265 | /@nodelib/fs.scandir/2.1.5: 266 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 267 | engines: {node: '>= 8'} 268 | dependencies: 269 | '@nodelib/fs.stat': 2.0.5 270 | run-parallel: 1.2.0 271 | dev: true 272 | 273 | /@nodelib/fs.stat/2.0.5: 274 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 275 | engines: {node: '>= 8'} 276 | dev: true 277 | 278 | /@nodelib/fs.walk/1.2.8: 279 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 280 | engines: {node: '>= 8'} 281 | dependencies: 282 | '@nodelib/fs.scandir': 2.1.5 283 | fastq: 1.15.0 284 | dev: true 285 | 286 | /@pinecone-database/pinecone/0.1.6_encoding@0.1.13: 287 | resolution: {integrity: sha512-tCnVc28udecthhgSBTdcMhYEW+xsR++AdZasp+ZE/AvUD1hOR2IR3edjk9m0sDxZyvXbno2KeqUbLIOZr7sCTw==} 288 | engines: {node: '>=14.0.0'} 289 | dependencies: 290 | cross-fetch: 3.1.6_encoding@0.1.13 291 | transitivePeerDependencies: 292 | - encoding 293 | dev: false 294 | 295 | /@rushstack/eslint-patch/1.3.0: 296 | resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} 297 | dev: true 298 | 299 | /@swc/helpers/0.4.14: 300 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} 301 | dependencies: 302 | tslib: 2.5.2 303 | dev: false 304 | 305 | /@swc/helpers/0.5.1: 306 | resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} 307 | dependencies: 308 | tslib: 2.5.2 309 | dev: false 310 | 311 | /@types/cookie/0.3.3: 312 | resolution: {integrity: sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==} 313 | dev: false 314 | 315 | /@types/hoist-non-react-statics/3.3.1: 316 | resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} 317 | dependencies: 318 | '@types/react': 18.2.6 319 | hoist-non-react-statics: 3.3.2 320 | dev: false 321 | 322 | /@types/json5/0.0.29: 323 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 324 | dev: true 325 | 326 | /@types/node/17.0.45: 327 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 328 | dev: true 329 | 330 | /@types/prop-types/15.7.5: 331 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 332 | 333 | /@types/react/18.2.6: 334 | resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} 335 | dependencies: 336 | '@types/prop-types': 15.7.5 337 | '@types/scheduler': 0.16.3 338 | csstype: 3.1.2 339 | 340 | /@types/scheduler/0.16.3: 341 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 342 | 343 | /@types/unist/2.0.6: 344 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 345 | dev: false 346 | 347 | /@types/url-parse/1.4.8: 348 | resolution: {integrity: sha512-zqqcGKyNWgTLFBxmaexGUKQyWqeG7HjXj20EuQJSJWwXe54BjX0ihIo5cJB9yAQzH8dNugJ9GvkBYMjPXs/PJw==} 349 | dev: true 350 | 351 | /@typescript-eslint/parser/5.59.7_5ujgynla27k2qkzlnkldjwsutm: 352 | resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} 353 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 354 | peerDependencies: 355 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 356 | typescript: '*' 357 | peerDependenciesMeta: 358 | typescript: 359 | optional: true 360 | dependencies: 361 | '@typescript-eslint/scope-manager': 5.59.7 362 | '@typescript-eslint/types': 5.59.7 363 | '@typescript-eslint/typescript-estree': 5.59.7_typescript@4.9.5 364 | debug: 4.3.4 365 | eslint: 8.41.0 366 | typescript: 4.9.5 367 | transitivePeerDependencies: 368 | - supports-color 369 | dev: true 370 | 371 | /@typescript-eslint/scope-manager/5.59.7: 372 | resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} 373 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 374 | dependencies: 375 | '@typescript-eslint/types': 5.59.7 376 | '@typescript-eslint/visitor-keys': 5.59.7 377 | dev: true 378 | 379 | /@typescript-eslint/types/5.59.7: 380 | resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} 381 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 382 | dev: true 383 | 384 | /@typescript-eslint/typescript-estree/5.59.7_typescript@4.9.5: 385 | resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} 386 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 387 | peerDependencies: 388 | typescript: '*' 389 | peerDependenciesMeta: 390 | typescript: 391 | optional: true 392 | dependencies: 393 | '@typescript-eslint/types': 5.59.7 394 | '@typescript-eslint/visitor-keys': 5.59.7 395 | debug: 4.3.4 396 | globby: 11.1.0 397 | is-glob: 4.0.3 398 | semver: 7.5.1 399 | tsutils: 3.21.0_typescript@4.9.5 400 | typescript: 4.9.5 401 | transitivePeerDependencies: 402 | - supports-color 403 | dev: true 404 | 405 | /@typescript-eslint/visitor-keys/5.59.7: 406 | resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} 407 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 408 | dependencies: 409 | '@typescript-eslint/types': 5.59.7 410 | eslint-visitor-keys: 3.4.1 411 | dev: true 412 | 413 | /@vercel/analytics/0.1.11_react@18.2.0: 414 | resolution: {integrity: sha512-mj5CPR02y0BRs1tN3oZcBNAX9a8NxsIUl9vElDPcqxnMfP0RbRc9fI9Ud7+QDg/1Izvt5uMumsr+6YsmVHcyuw==} 415 | peerDependencies: 416 | react: ^16.8||^17||^18 417 | dependencies: 418 | react: 18.2.0 419 | dev: false 420 | 421 | /@vercel/examples-ui/1.0.5_o6dt4yn4syzkhlixdxt4y57rzi: 422 | resolution: {integrity: sha512-6pj8V9MPLgrPajIUbqEkbmupEMnK6xBk5zkwsilwhA9mYQdxttqgVyDqlFMQhEVqb3tk0PshA+XxnZoDfLCpoQ==} 423 | peerDependencies: 424 | next: '*' 425 | react: ^17.0.2 || ^18.0.0-0 426 | react-dom: ^17.0.2 || ^18.0.0-0 427 | dependencies: 428 | '@swc/helpers': 0.4.14 429 | clsx: 1.2.1 430 | next: 13.4.3_biqbaboplfbrettd7655fr4n2y 431 | react: 18.2.0 432 | react-dom: 18.2.0_react@18.2.0 433 | sugar-high: 0.4.6 434 | dev: false 435 | 436 | /@viclafouch/fetch-crawler/1.0.13_encoding@0.1.13: 437 | resolution: {integrity: sha512-qePkJP3ht3gVXTHerDb3JzfyB/+NMG16rWOKW7cWZDTczcZ5z1nC537TRE8lPgp3SJMmQB/dvpV8eWctljYBiQ==} 438 | dependencies: 439 | abort-controller: 3.0.0 440 | cheerio: 1.0.0-rc.12 441 | express: 4.18.2 442 | node-fetch: 2.6.11_encoding@0.1.13 443 | transitivePeerDependencies: 444 | - encoding 445 | - supports-color 446 | dev: false 447 | 448 | /abort-controller/3.0.0: 449 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 450 | engines: {node: '>=6.5'} 451 | dependencies: 452 | event-target-shim: 5.0.1 453 | dev: false 454 | 455 | /accepts/1.3.8: 456 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 457 | engines: {node: '>= 0.6'} 458 | dependencies: 459 | mime-types: 2.1.35 460 | negotiator: 0.6.3 461 | dev: false 462 | 463 | /acorn-jsx/5.3.2_acorn@8.8.2: 464 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 465 | peerDependencies: 466 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 467 | dependencies: 468 | acorn: 8.8.2 469 | dev: true 470 | 471 | /acorn/8.8.2: 472 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 473 | engines: {node: '>=0.4.0'} 474 | hasBin: true 475 | dev: true 476 | 477 | /ajv/6.12.6: 478 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 479 | dependencies: 480 | fast-deep-equal: 3.1.3 481 | fast-json-stable-stringify: 2.1.0 482 | json-schema-traverse: 0.4.1 483 | uri-js: 4.4.1 484 | dev: true 485 | 486 | /ansi-regex/2.1.1: 487 | resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} 488 | engines: {node: '>=0.10.0'} 489 | dev: false 490 | 491 | /ansi-regex/5.0.1: 492 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 493 | engines: {node: '>=8'} 494 | dev: true 495 | 496 | /ansi-styles/2.2.1: 497 | resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} 498 | engines: {node: '>=0.10.0'} 499 | dev: false 500 | 501 | /ansi-styles/4.3.0: 502 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 503 | engines: {node: '>=8'} 504 | dependencies: 505 | color-convert: 2.0.1 506 | dev: true 507 | 508 | /any-promise/1.3.0: 509 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 510 | dev: true 511 | 512 | /anymatch/3.1.3: 513 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 514 | engines: {node: '>= 8'} 515 | dependencies: 516 | normalize-path: 3.0.0 517 | picomatch: 2.3.1 518 | dev: true 519 | 520 | /arg/5.0.2: 521 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 522 | dev: true 523 | 524 | /argparse/2.0.1: 525 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 526 | dev: true 527 | 528 | /aria-query/5.1.3: 529 | resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} 530 | dependencies: 531 | deep-equal: 2.2.1 532 | dev: true 533 | 534 | /array-buffer-byte-length/1.0.0: 535 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 536 | dependencies: 537 | call-bind: 1.0.2 538 | is-array-buffer: 3.0.2 539 | dev: true 540 | 541 | /array-flatten/1.1.1: 542 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 543 | dev: false 544 | 545 | /array-includes/3.1.6: 546 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 547 | engines: {node: '>= 0.4'} 548 | dependencies: 549 | call-bind: 1.0.2 550 | define-properties: 1.2.0 551 | es-abstract: 1.21.2 552 | get-intrinsic: 1.2.1 553 | is-string: 1.0.7 554 | dev: true 555 | 556 | /array-union/2.1.0: 557 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 558 | engines: {node: '>=8'} 559 | dev: true 560 | 561 | /array.prototype.flat/1.3.1: 562 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 563 | engines: {node: '>= 0.4'} 564 | dependencies: 565 | call-bind: 1.0.2 566 | define-properties: 1.2.0 567 | es-abstract: 1.21.2 568 | es-shim-unscopables: 1.0.0 569 | dev: true 570 | 571 | /array.prototype.flatmap/1.3.1: 572 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 573 | engines: {node: '>= 0.4'} 574 | dependencies: 575 | call-bind: 1.0.2 576 | define-properties: 1.2.0 577 | es-abstract: 1.21.2 578 | es-shim-unscopables: 1.0.0 579 | dev: true 580 | 581 | /array.prototype.tosorted/1.1.1: 582 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 583 | dependencies: 584 | call-bind: 1.0.2 585 | define-properties: 1.2.0 586 | es-abstract: 1.21.2 587 | es-shim-unscopables: 1.0.0 588 | get-intrinsic: 1.2.1 589 | dev: true 590 | 591 | /asn1/0.1.11: 592 | resolution: {integrity: sha512-Fh9zh3G2mZ8qM/kwsiKwL2U2FmXxVsboP4x1mXjnhKHv3SmzaBZoYvxEQJz/YS2gnCgd8xlAVWcZnQyC9qZBsA==} 593 | engines: {node: '>=0.4.9'} 594 | dev: false 595 | 596 | /assert-plus/0.1.5: 597 | resolution: {integrity: sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==} 598 | engines: {node: '>=0.8'} 599 | dev: false 600 | 601 | /ast-types-flow/0.0.7: 602 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 603 | dev: true 604 | 605 | /async/2.6.4: 606 | resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} 607 | dependencies: 608 | lodash: 4.17.21 609 | dev: false 610 | 611 | /asynckit/0.4.0: 612 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 613 | dev: false 614 | 615 | /autoprefixer/10.4.14_postcss@8.4.23: 616 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} 617 | engines: {node: ^10 || ^12 || >=14} 618 | hasBin: true 619 | peerDependencies: 620 | postcss: ^8.1.0 621 | dependencies: 622 | browserslist: 4.21.5 623 | caniuse-lite: 1.0.30001489 624 | fraction.js: 4.2.0 625 | normalize-range: 0.1.2 626 | picocolors: 1.0.0 627 | postcss: 8.4.23 628 | postcss-value-parser: 4.2.0 629 | dev: true 630 | 631 | /available-typed-arrays/1.0.5: 632 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 633 | engines: {node: '>= 0.4'} 634 | dev: true 635 | 636 | /aws-sign2/0.5.0: 637 | resolution: {integrity: sha512-oqUX0DM5j7aPWPCnpWebiyNIj2wiNI87ZxnOMoGv0aE4TGlBy2N+5iWc6dQ/NOKZaBD2W6PVz8jtOGkWzSC5EA==} 638 | dev: false 639 | 640 | /axe-core/4.7.1: 641 | resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} 642 | engines: {node: '>=4'} 643 | dev: true 644 | 645 | /axios/0.26.1: 646 | resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} 647 | dependencies: 648 | follow-redirects: 1.15.2 649 | transitivePeerDependencies: 650 | - debug 651 | dev: false 652 | 653 | /axobject-query/3.1.1: 654 | resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} 655 | dependencies: 656 | deep-equal: 2.2.1 657 | dev: true 658 | 659 | /bail/1.0.5: 660 | resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} 661 | dev: false 662 | 663 | /balanced-match/1.0.2: 664 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 665 | dev: true 666 | 667 | /binary-extensions/2.2.0: 668 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 669 | engines: {node: '>=8'} 670 | dev: true 671 | 672 | /bl/1.0.3: 673 | resolution: {integrity: sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==} 674 | dependencies: 675 | readable-stream: 2.0.6 676 | dev: false 677 | 678 | /bluebird/2.11.0: 679 | resolution: {integrity: sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==} 680 | dev: false 681 | 682 | /body-parser/1.20.1: 683 | resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 684 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 685 | dependencies: 686 | bytes: 3.1.2 687 | content-type: 1.0.5 688 | debug: 2.6.9 689 | depd: 2.0.0 690 | destroy: 1.2.0 691 | http-errors: 2.0.0 692 | iconv-lite: 0.4.24 693 | on-finished: 2.4.1 694 | qs: 6.11.0 695 | raw-body: 2.5.1 696 | type-is: 1.6.18 697 | unpipe: 1.0.0 698 | transitivePeerDependencies: 699 | - supports-color 700 | dev: false 701 | 702 | /boolbase/1.0.0: 703 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 704 | dev: false 705 | 706 | /boom/2.10.1: 707 | resolution: {integrity: sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==} 708 | engines: {node: '>=0.10.40'} 709 | deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). 710 | dependencies: 711 | hoek: 2.16.3 712 | dev: false 713 | 714 | /brace-expansion/1.1.11: 715 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 716 | dependencies: 717 | balanced-match: 1.0.2 718 | concat-map: 0.0.1 719 | dev: true 720 | 721 | /braces/3.0.2: 722 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 723 | engines: {node: '>=8'} 724 | dependencies: 725 | fill-range: 7.0.1 726 | dev: true 727 | 728 | /browserslist/4.21.5: 729 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 730 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 731 | hasBin: true 732 | dependencies: 733 | caniuse-lite: 1.0.30001489 734 | electron-to-chromium: 1.4.403 735 | node-releases: 2.0.11 736 | update-browserslist-db: 1.0.11_browserslist@4.21.5 737 | dev: true 738 | 739 | /busboy/1.6.0: 740 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 741 | engines: {node: '>=10.16.0'} 742 | dependencies: 743 | streamsearch: 1.1.0 744 | dev: false 745 | 746 | /bytes/3.1.2: 747 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 748 | engines: {node: '>= 0.8'} 749 | dev: false 750 | 751 | /call-bind/1.0.2: 752 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 753 | dependencies: 754 | function-bind: 1.1.1 755 | get-intrinsic: 1.2.1 756 | 757 | /callsites/3.1.0: 758 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 759 | engines: {node: '>=6'} 760 | dev: true 761 | 762 | /camelcase-css/2.0.1: 763 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 764 | engines: {node: '>= 6'} 765 | dev: true 766 | 767 | /caniuse-lite/1.0.30001489: 768 | resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} 769 | 770 | /caseless/0.11.0: 771 | resolution: {integrity: sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==} 772 | dev: false 773 | 774 | /chalk/1.1.3: 775 | resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} 776 | engines: {node: '>=0.10.0'} 777 | dependencies: 778 | ansi-styles: 2.2.1 779 | escape-string-regexp: 1.0.5 780 | has-ansi: 2.0.0 781 | strip-ansi: 3.0.1 782 | supports-color: 2.0.0 783 | dev: false 784 | 785 | /chalk/4.1.2: 786 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 787 | engines: {node: '>=10'} 788 | dependencies: 789 | ansi-styles: 4.3.0 790 | supports-color: 7.2.0 791 | dev: true 792 | 793 | /cheerio-select/2.1.0: 794 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 795 | dependencies: 796 | boolbase: 1.0.0 797 | css-select: 5.1.0 798 | css-what: 6.1.0 799 | domelementtype: 2.3.0 800 | domhandler: 5.0.3 801 | domutils: 3.1.0 802 | dev: false 803 | 804 | /cheerio/0.19.0: 805 | resolution: {integrity: sha512-Fwcm3zkR37STnPC8FepSHeSYJM5Rd596TZOcfDUdojR4Q735aK1Xn+M+ISagNneuCwMjK28w4kX+ETILGNT/UQ==} 806 | engines: {node: '>= 0.6'} 807 | dependencies: 808 | css-select: 1.0.0 809 | dom-serializer: 0.1.1 810 | entities: 1.1.2 811 | htmlparser2: 3.8.3 812 | lodash: 3.10.1 813 | dev: false 814 | 815 | /cheerio/1.0.0-rc.12: 816 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} 817 | engines: {node: '>= 6'} 818 | dependencies: 819 | cheerio-select: 2.1.0 820 | dom-serializer: 2.0.0 821 | domhandler: 5.0.3 822 | domutils: 3.1.0 823 | htmlparser2: 8.0.2 824 | parse5: 7.1.2 825 | parse5-htmlparser2-tree-adapter: 7.0.0 826 | dev: false 827 | 828 | /chokidar/3.5.3: 829 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 830 | engines: {node: '>= 8.10.0'} 831 | dependencies: 832 | anymatch: 3.1.3 833 | braces: 3.0.2 834 | glob-parent: 5.1.2 835 | is-binary-path: 2.1.0 836 | is-glob: 4.0.3 837 | normalize-path: 3.0.0 838 | readdirp: 3.6.0 839 | optionalDependencies: 840 | fsevents: 2.3.2 841 | dev: true 842 | 843 | /client-only/0.0.1: 844 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 845 | dev: false 846 | 847 | /clsx/1.2.1: 848 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 849 | engines: {node: '>=6'} 850 | dev: false 851 | 852 | /color-convert/2.0.1: 853 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 854 | engines: {node: '>=7.0.0'} 855 | dependencies: 856 | color-name: 1.1.4 857 | dev: true 858 | 859 | /color-name/1.1.4: 860 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 861 | dev: true 862 | 863 | /combined-stream/1.0.8: 864 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 865 | engines: {node: '>= 0.8'} 866 | dependencies: 867 | delayed-stream: 1.0.0 868 | dev: false 869 | 870 | /commander/2.20.3: 871 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 872 | dev: false 873 | 874 | /commander/4.1.1: 875 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 876 | engines: {node: '>= 6'} 877 | dev: true 878 | 879 | /concat-map/0.0.1: 880 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 881 | dev: true 882 | 883 | /content-disposition/0.5.4: 884 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 885 | engines: {node: '>= 0.6'} 886 | dependencies: 887 | safe-buffer: 5.2.1 888 | dev: false 889 | 890 | /content-type/1.0.5: 891 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 892 | engines: {node: '>= 0.6'} 893 | dev: false 894 | 895 | /cookie-signature/1.0.6: 896 | resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 897 | dev: false 898 | 899 | /cookie/0.4.2: 900 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 901 | engines: {node: '>= 0.6'} 902 | dev: false 903 | 904 | /cookie/0.5.0: 905 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 906 | engines: {node: '>= 0.6'} 907 | dev: false 908 | 909 | /core-util-is/1.0.3: 910 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 911 | dev: false 912 | 913 | /cross-env/7.0.3: 914 | resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} 915 | engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} 916 | hasBin: true 917 | dependencies: 918 | cross-spawn: 7.0.3 919 | dev: false 920 | 921 | /cross-fetch/3.1.6_encoding@0.1.13: 922 | resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} 923 | dependencies: 924 | node-fetch: 2.6.11_encoding@0.1.13 925 | transitivePeerDependencies: 926 | - encoding 927 | dev: false 928 | 929 | /cross-spawn/7.0.3: 930 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 931 | engines: {node: '>= 8'} 932 | dependencies: 933 | path-key: 3.1.1 934 | shebang-command: 2.0.0 935 | which: 2.0.2 936 | 937 | /cryptiles/2.0.5: 938 | resolution: {integrity: sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==} 939 | engines: {node: '>=0.10.40'} 940 | deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). 941 | dependencies: 942 | boom: 2.10.1 943 | dev: false 944 | 945 | /css-select/1.0.0: 946 | resolution: {integrity: sha512-/xPlD7betkfd7ChGkLGGWx5HWyiHDOSn7aACLzdH0nwucPvB0EAm8hMBm7Xn7vGfAeRRN7KZ8wumGm8NoNcMRw==} 947 | dependencies: 948 | boolbase: 1.0.0 949 | css-what: 1.0.0 950 | domutils: 1.4.3 951 | nth-check: 1.0.2 952 | dev: false 953 | 954 | /css-select/1.2.0: 955 | resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} 956 | dependencies: 957 | boolbase: 1.0.0 958 | css-what: 2.1.3 959 | domutils: 1.5.1 960 | nth-check: 1.0.2 961 | dev: false 962 | 963 | /css-select/5.1.0: 964 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 965 | dependencies: 966 | boolbase: 1.0.0 967 | css-what: 6.1.0 968 | domhandler: 5.0.3 969 | domutils: 3.1.0 970 | nth-check: 2.1.1 971 | dev: false 972 | 973 | /css-what/1.0.0: 974 | resolution: {integrity: sha512-60SUMPBreXrLXgvpM8kYpO0AOyMRhdRlXFX5BMQbZq1SIJCyNE56nqFQhmvREQdUJpedbGRYZ5wOyq3/F6q5Zw==} 975 | dev: false 976 | 977 | /css-what/2.1.3: 978 | resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} 979 | dev: false 980 | 981 | /css-what/6.1.0: 982 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 983 | engines: {node: '>= 6'} 984 | dev: false 985 | 986 | /cssesc/3.0.0: 987 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 988 | engines: {node: '>=4'} 989 | hasBin: true 990 | dev: true 991 | 992 | /csstype/3.1.2: 993 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 994 | 995 | /ctype/0.5.3: 996 | resolution: {integrity: sha512-T6CEkoSV4q50zW3TlTHMbzy1E5+zlnNcY+yb7tWVYlTwPhx9LpnfAkd4wecpWknDyptp4k97LUZeInlf6jdzBg==} 997 | engines: {node: '>= 0.4'} 998 | dev: false 999 | 1000 | /damerau-levenshtein/1.0.8: 1001 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 1002 | dev: true 1003 | 1004 | /debug/2.6.9: 1005 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1006 | peerDependencies: 1007 | supports-color: '*' 1008 | peerDependenciesMeta: 1009 | supports-color: 1010 | optional: true 1011 | dependencies: 1012 | ms: 2.0.0 1013 | dev: false 1014 | 1015 | /debug/3.2.7: 1016 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1017 | peerDependencies: 1018 | supports-color: '*' 1019 | peerDependenciesMeta: 1020 | supports-color: 1021 | optional: true 1022 | dependencies: 1023 | ms: 2.1.3 1024 | dev: true 1025 | 1026 | /debug/4.3.4: 1027 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1028 | engines: {node: '>=6.0'} 1029 | peerDependencies: 1030 | supports-color: '*' 1031 | peerDependenciesMeta: 1032 | supports-color: 1033 | optional: true 1034 | dependencies: 1035 | ms: 2.1.2 1036 | dev: true 1037 | 1038 | /deep-equal/2.2.1: 1039 | resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} 1040 | dependencies: 1041 | array-buffer-byte-length: 1.0.0 1042 | call-bind: 1.0.2 1043 | es-get-iterator: 1.1.3 1044 | get-intrinsic: 1.2.1 1045 | is-arguments: 1.1.1 1046 | is-array-buffer: 3.0.2 1047 | is-date-object: 1.0.5 1048 | is-regex: 1.1.4 1049 | is-shared-array-buffer: 1.0.2 1050 | isarray: 2.0.5 1051 | object-is: 1.1.5 1052 | object-keys: 1.1.1 1053 | object.assign: 4.1.4 1054 | regexp.prototype.flags: 1.5.0 1055 | side-channel: 1.0.4 1056 | which-boxed-primitive: 1.0.2 1057 | which-collection: 1.0.1 1058 | which-typed-array: 1.1.9 1059 | dev: true 1060 | 1061 | /deep-is/0.1.4: 1062 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1063 | dev: true 1064 | 1065 | /define-properties/1.2.0: 1066 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 1067 | engines: {node: '>= 0.4'} 1068 | dependencies: 1069 | has-property-descriptors: 1.0.0 1070 | object-keys: 1.1.1 1071 | dev: true 1072 | 1073 | /delayed-stream/1.0.0: 1074 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1075 | engines: {node: '>=0.4.0'} 1076 | dev: false 1077 | 1078 | /depd/2.0.0: 1079 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1080 | engines: {node: '>= 0.8'} 1081 | dev: false 1082 | 1083 | /destroy/1.2.0: 1084 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1085 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1086 | dev: false 1087 | 1088 | /didyoumean/1.2.2: 1089 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1090 | dev: true 1091 | 1092 | /dir-glob/3.0.1: 1093 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1094 | engines: {node: '>=8'} 1095 | dependencies: 1096 | path-type: 4.0.0 1097 | dev: true 1098 | 1099 | /dlv/1.1.3: 1100 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1101 | dev: true 1102 | 1103 | /doctrine/2.1.0: 1104 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1105 | engines: {node: '>=0.10.0'} 1106 | dependencies: 1107 | esutils: 2.0.3 1108 | dev: true 1109 | 1110 | /doctrine/3.0.0: 1111 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1112 | engines: {node: '>=6.0.0'} 1113 | dependencies: 1114 | esutils: 2.0.3 1115 | dev: true 1116 | 1117 | /dom-serializer/0.1.1: 1118 | resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==} 1119 | dependencies: 1120 | domelementtype: 1.3.1 1121 | entities: 1.1.2 1122 | dev: false 1123 | 1124 | /dom-serializer/0.2.2: 1125 | resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} 1126 | dependencies: 1127 | domelementtype: 2.3.0 1128 | entities: 2.2.0 1129 | dev: false 1130 | 1131 | /dom-serializer/2.0.0: 1132 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1133 | dependencies: 1134 | domelementtype: 2.3.0 1135 | domhandler: 5.0.3 1136 | entities: 4.5.0 1137 | dev: false 1138 | 1139 | /domelementtype/1.3.1: 1140 | resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} 1141 | dev: false 1142 | 1143 | /domelementtype/2.3.0: 1144 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1145 | dev: false 1146 | 1147 | /domhandler/2.3.0: 1148 | resolution: {integrity: sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ==} 1149 | dependencies: 1150 | domelementtype: 1.3.1 1151 | dev: false 1152 | 1153 | /domhandler/5.0.3: 1154 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1155 | engines: {node: '>= 4'} 1156 | dependencies: 1157 | domelementtype: 2.3.0 1158 | dev: false 1159 | 1160 | /domutils/1.4.3: 1161 | resolution: {integrity: sha512-ZkVgS/PpxjyJMb+S2iVHHEZjVnOUtjGp0/zstqKGTE9lrZtNHlNQmLwP/lhLMEApYbzc08BKMx9IFpKhaSbW1w==} 1162 | dependencies: 1163 | domelementtype: 1.3.1 1164 | dev: false 1165 | 1166 | /domutils/1.5.1: 1167 | resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} 1168 | dependencies: 1169 | dom-serializer: 0.2.2 1170 | domelementtype: 1.3.1 1171 | dev: false 1172 | 1173 | /domutils/3.1.0: 1174 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 1175 | dependencies: 1176 | dom-serializer: 2.0.0 1177 | domelementtype: 2.3.0 1178 | domhandler: 5.0.3 1179 | dev: false 1180 | 1181 | /ee-first/1.1.1: 1182 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1183 | dev: false 1184 | 1185 | /electron-to-chromium/1.4.403: 1186 | resolution: {integrity: sha512-evCMqXJWmbQHdlh307peXNguqVIMmcLGrQwXiR+Qc98js8jPDeT9rse1+EF2YRjWgueuzj1r4WWLAe4/U+xjMg==} 1187 | dev: true 1188 | 1189 | /emoji-regex/9.2.2: 1190 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1191 | dev: true 1192 | 1193 | /encodeurl/1.0.2: 1194 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1195 | engines: {node: '>= 0.8'} 1196 | dev: false 1197 | 1198 | /encoding/0.1.13: 1199 | resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} 1200 | dependencies: 1201 | iconv-lite: 0.6.3 1202 | dev: false 1203 | 1204 | /entities/1.0.0: 1205 | resolution: {integrity: sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ==} 1206 | dev: false 1207 | 1208 | /entities/1.1.2: 1209 | resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} 1210 | dev: false 1211 | 1212 | /entities/2.2.0: 1213 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 1214 | dev: false 1215 | 1216 | /entities/4.5.0: 1217 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1218 | engines: {node: '>=0.12'} 1219 | dev: false 1220 | 1221 | /es-abstract/1.21.2: 1222 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 1223 | engines: {node: '>= 0.4'} 1224 | dependencies: 1225 | array-buffer-byte-length: 1.0.0 1226 | available-typed-arrays: 1.0.5 1227 | call-bind: 1.0.2 1228 | es-set-tostringtag: 2.0.1 1229 | es-to-primitive: 1.2.1 1230 | function.prototype.name: 1.1.5 1231 | get-intrinsic: 1.2.1 1232 | get-symbol-description: 1.0.0 1233 | globalthis: 1.0.3 1234 | gopd: 1.0.1 1235 | has: 1.0.3 1236 | has-property-descriptors: 1.0.0 1237 | has-proto: 1.0.1 1238 | has-symbols: 1.0.3 1239 | internal-slot: 1.0.5 1240 | is-array-buffer: 3.0.2 1241 | is-callable: 1.2.7 1242 | is-negative-zero: 2.0.2 1243 | is-regex: 1.1.4 1244 | is-shared-array-buffer: 1.0.2 1245 | is-string: 1.0.7 1246 | is-typed-array: 1.1.10 1247 | is-weakref: 1.0.2 1248 | object-inspect: 1.12.3 1249 | object-keys: 1.1.1 1250 | object.assign: 4.1.4 1251 | regexp.prototype.flags: 1.5.0 1252 | safe-regex-test: 1.0.0 1253 | string.prototype.trim: 1.2.7 1254 | string.prototype.trimend: 1.0.6 1255 | string.prototype.trimstart: 1.0.6 1256 | typed-array-length: 1.0.4 1257 | unbox-primitive: 1.0.2 1258 | which-typed-array: 1.1.9 1259 | dev: true 1260 | 1261 | /es-get-iterator/1.1.3: 1262 | resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} 1263 | dependencies: 1264 | call-bind: 1.0.2 1265 | get-intrinsic: 1.2.1 1266 | has-symbols: 1.0.3 1267 | is-arguments: 1.1.1 1268 | is-map: 2.0.2 1269 | is-set: 2.0.2 1270 | is-string: 1.0.7 1271 | isarray: 2.0.5 1272 | stop-iteration-iterator: 1.0.0 1273 | dev: true 1274 | 1275 | /es-set-tostringtag/2.0.1: 1276 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 1277 | engines: {node: '>= 0.4'} 1278 | dependencies: 1279 | get-intrinsic: 1.2.1 1280 | has: 1.0.3 1281 | has-tostringtag: 1.0.0 1282 | dev: true 1283 | 1284 | /es-shim-unscopables/1.0.0: 1285 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1286 | dependencies: 1287 | has: 1.0.3 1288 | dev: true 1289 | 1290 | /es-to-primitive/1.2.1: 1291 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1292 | engines: {node: '>= 0.4'} 1293 | dependencies: 1294 | is-callable: 1.2.7 1295 | is-date-object: 1.0.5 1296 | is-symbol: 1.0.4 1297 | dev: true 1298 | 1299 | /escalade/3.1.1: 1300 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1301 | engines: {node: '>=6'} 1302 | dev: true 1303 | 1304 | /escape-html/1.0.3: 1305 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1306 | dev: false 1307 | 1308 | /escape-string-regexp/1.0.5: 1309 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1310 | engines: {node: '>=0.8.0'} 1311 | dev: false 1312 | 1313 | /escape-string-regexp/4.0.0: 1314 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1315 | engines: {node: '>=10'} 1316 | dev: true 1317 | 1318 | /eslint-config-next/12.3.4_5ujgynla27k2qkzlnkldjwsutm: 1319 | resolution: {integrity: sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==} 1320 | peerDependencies: 1321 | eslint: ^7.23.0 || ^8.0.0 1322 | typescript: '>=3.3.1' 1323 | peerDependenciesMeta: 1324 | typescript: 1325 | optional: true 1326 | dependencies: 1327 | '@next/eslint-plugin-next': 12.3.4 1328 | '@rushstack/eslint-patch': 1.3.0 1329 | '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm 1330 | eslint: 8.41.0 1331 | eslint-import-resolver-node: 0.3.7 1332 | eslint-import-resolver-typescript: 2.7.1_bwfkg7osvbtezdkshju7lqq44q 1333 | eslint-plugin-import: 2.27.5_po3x6aylron7ephmxhmzaqgufe 1334 | eslint-plugin-jsx-a11y: 6.7.1_eslint@8.41.0 1335 | eslint-plugin-react: 7.32.2_eslint@8.41.0 1336 | eslint-plugin-react-hooks: 4.6.0_eslint@8.41.0 1337 | typescript: 4.9.5 1338 | transitivePeerDependencies: 1339 | - eslint-import-resolver-webpack 1340 | - supports-color 1341 | dev: true 1342 | 1343 | /eslint-import-resolver-node/0.3.7: 1344 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} 1345 | dependencies: 1346 | debug: 3.2.7 1347 | is-core-module: 2.12.1 1348 | resolve: 1.22.2 1349 | transitivePeerDependencies: 1350 | - supports-color 1351 | dev: true 1352 | 1353 | /eslint-import-resolver-typescript/2.7.1_bwfkg7osvbtezdkshju7lqq44q: 1354 | resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} 1355 | engines: {node: '>=4'} 1356 | peerDependencies: 1357 | eslint: '*' 1358 | eslint-plugin-import: '*' 1359 | dependencies: 1360 | debug: 4.3.4 1361 | eslint: 8.41.0 1362 | eslint-plugin-import: 2.27.5_po3x6aylron7ephmxhmzaqgufe 1363 | glob: 7.2.3 1364 | is-glob: 4.0.3 1365 | resolve: 1.22.2 1366 | tsconfig-paths: 3.14.2 1367 | transitivePeerDependencies: 1368 | - supports-color 1369 | dev: true 1370 | 1371 | /eslint-module-utils/2.8.0_kni5gu5wkqnbu5wxsoiryysiru: 1372 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1373 | engines: {node: '>=4'} 1374 | peerDependencies: 1375 | '@typescript-eslint/parser': '*' 1376 | eslint: '*' 1377 | eslint-import-resolver-node: '*' 1378 | eslint-import-resolver-typescript: '*' 1379 | eslint-import-resolver-webpack: '*' 1380 | peerDependenciesMeta: 1381 | '@typescript-eslint/parser': 1382 | optional: true 1383 | eslint: 1384 | optional: true 1385 | eslint-import-resolver-node: 1386 | optional: true 1387 | eslint-import-resolver-typescript: 1388 | optional: true 1389 | eslint-import-resolver-webpack: 1390 | optional: true 1391 | dependencies: 1392 | '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm 1393 | debug: 3.2.7 1394 | eslint: 8.41.0 1395 | eslint-import-resolver-node: 0.3.7 1396 | eslint-import-resolver-typescript: 2.7.1_bwfkg7osvbtezdkshju7lqq44q 1397 | transitivePeerDependencies: 1398 | - supports-color 1399 | dev: true 1400 | 1401 | /eslint-plugin-import/2.27.5_po3x6aylron7ephmxhmzaqgufe: 1402 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 1403 | engines: {node: '>=4'} 1404 | peerDependencies: 1405 | '@typescript-eslint/parser': '*' 1406 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1407 | peerDependenciesMeta: 1408 | '@typescript-eslint/parser': 1409 | optional: true 1410 | dependencies: 1411 | '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm 1412 | array-includes: 3.1.6 1413 | array.prototype.flat: 1.3.1 1414 | array.prototype.flatmap: 1.3.1 1415 | debug: 3.2.7 1416 | doctrine: 2.1.0 1417 | eslint: 8.41.0 1418 | eslint-import-resolver-node: 0.3.7 1419 | eslint-module-utils: 2.8.0_kni5gu5wkqnbu5wxsoiryysiru 1420 | has: 1.0.3 1421 | is-core-module: 2.12.1 1422 | is-glob: 4.0.3 1423 | minimatch: 3.1.2 1424 | object.values: 1.1.6 1425 | resolve: 1.22.2 1426 | semver: 6.3.0 1427 | tsconfig-paths: 3.14.2 1428 | transitivePeerDependencies: 1429 | - eslint-import-resolver-typescript 1430 | - eslint-import-resolver-webpack 1431 | - supports-color 1432 | dev: true 1433 | 1434 | /eslint-plugin-jsx-a11y/6.7.1_eslint@8.41.0: 1435 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 1436 | engines: {node: '>=4.0'} 1437 | peerDependencies: 1438 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1439 | dependencies: 1440 | '@babel/runtime': 7.21.5 1441 | aria-query: 5.1.3 1442 | array-includes: 3.1.6 1443 | array.prototype.flatmap: 1.3.1 1444 | ast-types-flow: 0.0.7 1445 | axe-core: 4.7.1 1446 | axobject-query: 3.1.1 1447 | damerau-levenshtein: 1.0.8 1448 | emoji-regex: 9.2.2 1449 | eslint: 8.41.0 1450 | has: 1.0.3 1451 | jsx-ast-utils: 3.3.3 1452 | language-tags: 1.0.5 1453 | minimatch: 3.1.2 1454 | object.entries: 1.1.6 1455 | object.fromentries: 2.0.6 1456 | semver: 6.3.0 1457 | dev: true 1458 | 1459 | /eslint-plugin-react-hooks/4.6.0_eslint@8.41.0: 1460 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1461 | engines: {node: '>=10'} 1462 | peerDependencies: 1463 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1464 | dependencies: 1465 | eslint: 8.41.0 1466 | dev: true 1467 | 1468 | /eslint-plugin-react/7.32.2_eslint@8.41.0: 1469 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 1470 | engines: {node: '>=4'} 1471 | peerDependencies: 1472 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1473 | dependencies: 1474 | array-includes: 3.1.6 1475 | array.prototype.flatmap: 1.3.1 1476 | array.prototype.tosorted: 1.1.1 1477 | doctrine: 2.1.0 1478 | eslint: 8.41.0 1479 | estraverse: 5.3.0 1480 | jsx-ast-utils: 3.3.3 1481 | minimatch: 3.1.2 1482 | object.entries: 1.1.6 1483 | object.fromentries: 2.0.6 1484 | object.hasown: 1.1.2 1485 | object.values: 1.1.6 1486 | prop-types: 15.8.1 1487 | resolve: 2.0.0-next.4 1488 | semver: 6.3.0 1489 | string.prototype.matchall: 4.0.8 1490 | dev: true 1491 | 1492 | /eslint-scope/7.2.0: 1493 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 1494 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1495 | dependencies: 1496 | esrecurse: 4.3.0 1497 | estraverse: 5.3.0 1498 | dev: true 1499 | 1500 | /eslint-visitor-keys/3.4.1: 1501 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 1502 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1503 | dev: true 1504 | 1505 | /eslint/8.41.0: 1506 | resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} 1507 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1508 | hasBin: true 1509 | dependencies: 1510 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0 1511 | '@eslint-community/regexpp': 4.5.1 1512 | '@eslint/eslintrc': 2.0.3 1513 | '@eslint/js': 8.41.0 1514 | '@humanwhocodes/config-array': 0.11.8 1515 | '@humanwhocodes/module-importer': 1.0.1 1516 | '@nodelib/fs.walk': 1.2.8 1517 | ajv: 6.12.6 1518 | chalk: 4.1.2 1519 | cross-spawn: 7.0.3 1520 | debug: 4.3.4 1521 | doctrine: 3.0.0 1522 | escape-string-regexp: 4.0.0 1523 | eslint-scope: 7.2.0 1524 | eslint-visitor-keys: 3.4.1 1525 | espree: 9.5.2 1526 | esquery: 1.5.0 1527 | esutils: 2.0.3 1528 | fast-deep-equal: 3.1.3 1529 | file-entry-cache: 6.0.1 1530 | find-up: 5.0.0 1531 | glob-parent: 6.0.2 1532 | globals: 13.20.0 1533 | graphemer: 1.4.0 1534 | ignore: 5.2.4 1535 | import-fresh: 3.3.0 1536 | imurmurhash: 0.1.4 1537 | is-glob: 4.0.3 1538 | is-path-inside: 3.0.3 1539 | js-yaml: 4.1.0 1540 | json-stable-stringify-without-jsonify: 1.0.1 1541 | levn: 0.4.1 1542 | lodash.merge: 4.6.2 1543 | minimatch: 3.1.2 1544 | natural-compare: 1.4.0 1545 | optionator: 0.9.1 1546 | strip-ansi: 6.0.1 1547 | strip-json-comments: 3.1.1 1548 | text-table: 0.2.0 1549 | transitivePeerDependencies: 1550 | - supports-color 1551 | dev: true 1552 | 1553 | /espree/9.5.2: 1554 | resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} 1555 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1556 | dependencies: 1557 | acorn: 8.8.2 1558 | acorn-jsx: 5.3.2_acorn@8.8.2 1559 | eslint-visitor-keys: 3.4.1 1560 | dev: true 1561 | 1562 | /esquery/1.5.0: 1563 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1564 | engines: {node: '>=0.10'} 1565 | dependencies: 1566 | estraverse: 5.3.0 1567 | dev: true 1568 | 1569 | /esrecurse/4.3.0: 1570 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1571 | engines: {node: '>=4.0'} 1572 | dependencies: 1573 | estraverse: 5.3.0 1574 | dev: true 1575 | 1576 | /estraverse/5.3.0: 1577 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1578 | engines: {node: '>=4.0'} 1579 | dev: true 1580 | 1581 | /esutils/2.0.3: 1582 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1583 | engines: {node: '>=0.10.0'} 1584 | dev: true 1585 | 1586 | /etag/1.8.1: 1587 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1588 | engines: {node: '>= 0.6'} 1589 | dev: false 1590 | 1591 | /event-target-shim/5.0.1: 1592 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1593 | engines: {node: '>=6'} 1594 | dev: false 1595 | 1596 | /eventsource-parser/0.1.0: 1597 | resolution: {integrity: sha512-M9QjFtEIkwytUarnx113HGmgtk52LSn3jNAtnWKi3V+b9rqSfQeVdLsaD5AG/O4IrGQwmAAHBIsqbmURPTd2rA==} 1598 | engines: {node: '>=14.18'} 1599 | dev: false 1600 | 1601 | /express/4.18.2: 1602 | resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} 1603 | engines: {node: '>= 0.10.0'} 1604 | dependencies: 1605 | accepts: 1.3.8 1606 | array-flatten: 1.1.1 1607 | body-parser: 1.20.1 1608 | content-disposition: 0.5.4 1609 | content-type: 1.0.5 1610 | cookie: 0.5.0 1611 | cookie-signature: 1.0.6 1612 | debug: 2.6.9 1613 | depd: 2.0.0 1614 | encodeurl: 1.0.2 1615 | escape-html: 1.0.3 1616 | etag: 1.8.1 1617 | finalhandler: 1.2.0 1618 | fresh: 0.5.2 1619 | http-errors: 2.0.0 1620 | merge-descriptors: 1.0.1 1621 | methods: 1.1.2 1622 | on-finished: 2.4.1 1623 | parseurl: 1.3.3 1624 | path-to-regexp: 0.1.7 1625 | proxy-addr: 2.0.7 1626 | qs: 6.11.0 1627 | range-parser: 1.2.1 1628 | safe-buffer: 5.2.1 1629 | send: 0.18.0 1630 | serve-static: 1.15.0 1631 | setprototypeof: 1.2.0 1632 | statuses: 2.0.1 1633 | type-is: 1.6.18 1634 | utils-merge: 1.0.1 1635 | vary: 1.1.2 1636 | transitivePeerDependencies: 1637 | - supports-color 1638 | dev: false 1639 | 1640 | /extend/3.0.2: 1641 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1642 | dev: false 1643 | 1644 | /fast-deep-equal/3.1.3: 1645 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1646 | dev: true 1647 | 1648 | /fast-glob/3.2.12: 1649 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1650 | engines: {node: '>=8.6.0'} 1651 | dependencies: 1652 | '@nodelib/fs.stat': 2.0.5 1653 | '@nodelib/fs.walk': 1.2.8 1654 | glob-parent: 5.1.2 1655 | merge2: 1.4.1 1656 | micromatch: 4.0.5 1657 | dev: true 1658 | 1659 | /fast-json-stable-stringify/2.1.0: 1660 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1661 | dev: true 1662 | 1663 | /fast-levenshtein/2.0.6: 1664 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1665 | dev: true 1666 | 1667 | /fastq/1.15.0: 1668 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1669 | dependencies: 1670 | reusify: 1.0.4 1671 | dev: true 1672 | 1673 | /file-entry-cache/6.0.1: 1674 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1675 | engines: {node: ^10.12.0 || >=12.0.0} 1676 | dependencies: 1677 | flat-cache: 3.0.4 1678 | dev: true 1679 | 1680 | /fill-range/7.0.1: 1681 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1682 | engines: {node: '>=8'} 1683 | dependencies: 1684 | to-regex-range: 5.0.1 1685 | dev: true 1686 | 1687 | /finalhandler/1.2.0: 1688 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 1689 | engines: {node: '>= 0.8'} 1690 | dependencies: 1691 | debug: 2.6.9 1692 | encodeurl: 1.0.2 1693 | escape-html: 1.0.3 1694 | on-finished: 2.4.1 1695 | parseurl: 1.3.3 1696 | statuses: 2.0.1 1697 | unpipe: 1.0.0 1698 | transitivePeerDependencies: 1699 | - supports-color 1700 | dev: false 1701 | 1702 | /find-up/5.0.0: 1703 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1704 | engines: {node: '>=10'} 1705 | dependencies: 1706 | locate-path: 6.0.0 1707 | path-exists: 4.0.0 1708 | dev: true 1709 | 1710 | /flat-cache/3.0.4: 1711 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1712 | engines: {node: ^10.12.0 || >=12.0.0} 1713 | dependencies: 1714 | flatted: 3.2.7 1715 | rimraf: 3.0.2 1716 | dev: true 1717 | 1718 | /flatted/3.2.7: 1719 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1720 | dev: true 1721 | 1722 | /follow-redirects/1.15.2: 1723 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1724 | engines: {node: '>=4.0'} 1725 | peerDependencies: 1726 | debug: '*' 1727 | peerDependenciesMeta: 1728 | debug: 1729 | optional: true 1730 | dev: false 1731 | 1732 | /for-each/0.3.3: 1733 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1734 | dependencies: 1735 | is-callable: 1.2.7 1736 | dev: true 1737 | 1738 | /forever-agent/0.6.1: 1739 | resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} 1740 | dev: false 1741 | 1742 | /form-data/1.0.1: 1743 | resolution: {integrity: sha512-M4Yhq2mLogpCtpUmfopFlTTuIe6mSCTgKvnlMhDj3NcgVhA1uS20jT0n+xunKPzpmL5w2erSVtp+SKiJf1TlWg==} 1744 | engines: {node: '>= 0.10'} 1745 | dependencies: 1746 | async: 2.6.4 1747 | combined-stream: 1.0.8 1748 | mime-types: 2.1.35 1749 | dev: false 1750 | 1751 | /form-data/4.0.0: 1752 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1753 | engines: {node: '>= 6'} 1754 | dependencies: 1755 | asynckit: 0.4.0 1756 | combined-stream: 1.0.8 1757 | mime-types: 2.1.35 1758 | dev: false 1759 | 1760 | /forwarded/0.2.0: 1761 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1762 | engines: {node: '>= 0.6'} 1763 | dev: false 1764 | 1765 | /fraction.js/4.2.0: 1766 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1767 | dev: true 1768 | 1769 | /fresh/0.5.2: 1770 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1771 | engines: {node: '>= 0.6'} 1772 | dev: false 1773 | 1774 | /fs.realpath/1.0.0: 1775 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1776 | dev: true 1777 | 1778 | /fsevents/2.3.2: 1779 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1780 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1781 | os: [darwin] 1782 | requiresBuild: true 1783 | dev: true 1784 | optional: true 1785 | 1786 | /function-bind/1.1.1: 1787 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1788 | 1789 | /function.prototype.name/1.1.5: 1790 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1791 | engines: {node: '>= 0.4'} 1792 | dependencies: 1793 | call-bind: 1.0.2 1794 | define-properties: 1.2.0 1795 | es-abstract: 1.21.2 1796 | functions-have-names: 1.2.3 1797 | dev: true 1798 | 1799 | /functions-have-names/1.2.3: 1800 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1801 | dev: true 1802 | 1803 | /generate-function/2.3.1: 1804 | resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} 1805 | dependencies: 1806 | is-property: 1.0.2 1807 | dev: false 1808 | 1809 | /generate-object-property/1.2.0: 1810 | resolution: {integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==} 1811 | dependencies: 1812 | is-property: 1.0.2 1813 | dev: false 1814 | 1815 | /get-intrinsic/1.2.1: 1816 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1817 | dependencies: 1818 | function-bind: 1.1.1 1819 | has: 1.0.3 1820 | has-proto: 1.0.1 1821 | has-symbols: 1.0.3 1822 | 1823 | /get-symbol-description/1.0.0: 1824 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1825 | engines: {node: '>= 0.4'} 1826 | dependencies: 1827 | call-bind: 1.0.2 1828 | get-intrinsic: 1.2.1 1829 | dev: true 1830 | 1831 | /glob-parent/5.1.2: 1832 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1833 | engines: {node: '>= 6'} 1834 | dependencies: 1835 | is-glob: 4.0.3 1836 | dev: true 1837 | 1838 | /glob-parent/6.0.2: 1839 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1840 | engines: {node: '>=10.13.0'} 1841 | dependencies: 1842 | is-glob: 4.0.3 1843 | dev: true 1844 | 1845 | /glob/7.1.6: 1846 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1847 | dependencies: 1848 | fs.realpath: 1.0.0 1849 | inflight: 1.0.6 1850 | inherits: 2.0.4 1851 | minimatch: 3.1.2 1852 | once: 1.4.0 1853 | path-is-absolute: 1.0.1 1854 | dev: true 1855 | 1856 | /glob/7.1.7: 1857 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1858 | dependencies: 1859 | fs.realpath: 1.0.0 1860 | inflight: 1.0.6 1861 | inherits: 2.0.4 1862 | minimatch: 3.1.2 1863 | once: 1.4.0 1864 | path-is-absolute: 1.0.1 1865 | dev: true 1866 | 1867 | /glob/7.2.3: 1868 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1869 | dependencies: 1870 | fs.realpath: 1.0.0 1871 | inflight: 1.0.6 1872 | inherits: 2.0.4 1873 | minimatch: 3.1.2 1874 | once: 1.4.0 1875 | path-is-absolute: 1.0.1 1876 | dev: true 1877 | 1878 | /globals/13.20.0: 1879 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1880 | engines: {node: '>=8'} 1881 | dependencies: 1882 | type-fest: 0.20.2 1883 | dev: true 1884 | 1885 | /globalthis/1.0.3: 1886 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1887 | engines: {node: '>= 0.4'} 1888 | dependencies: 1889 | define-properties: 1.2.0 1890 | dev: true 1891 | 1892 | /globby/11.1.0: 1893 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1894 | engines: {node: '>=10'} 1895 | dependencies: 1896 | array-union: 2.1.0 1897 | dir-glob: 3.0.1 1898 | fast-glob: 3.2.12 1899 | ignore: 5.2.4 1900 | merge2: 1.4.1 1901 | slash: 3.0.0 1902 | dev: true 1903 | 1904 | /gopd/1.0.1: 1905 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1906 | dependencies: 1907 | get-intrinsic: 1.2.1 1908 | dev: true 1909 | 1910 | /graphemer/1.4.0: 1911 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1912 | dev: true 1913 | 1914 | /har-validator/1.8.0: 1915 | resolution: {integrity: sha512-0+M2lRG5aXVEFwZZ2tUeRVBZT5AxViug9y94qquvQaHHVoL9ydL86aJvI3K28rwoD+DL15DzAgWtPCXNhdTKAQ==} 1916 | engines: {node: '>=0.10'} 1917 | deprecated: this library is no longer supported 1918 | hasBin: true 1919 | dependencies: 1920 | bluebird: 2.11.0 1921 | chalk: 1.1.3 1922 | commander: 2.20.3 1923 | is-my-json-valid: 2.20.6 1924 | dev: false 1925 | 1926 | /has-ansi/2.0.0: 1927 | resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} 1928 | engines: {node: '>=0.10.0'} 1929 | dependencies: 1930 | ansi-regex: 2.1.1 1931 | dev: false 1932 | 1933 | /has-bigints/1.0.2: 1934 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1935 | dev: true 1936 | 1937 | /has-flag/4.0.0: 1938 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1939 | engines: {node: '>=8'} 1940 | dev: true 1941 | 1942 | /has-property-descriptors/1.0.0: 1943 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1944 | dependencies: 1945 | get-intrinsic: 1.2.1 1946 | dev: true 1947 | 1948 | /has-proto/1.0.1: 1949 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1950 | engines: {node: '>= 0.4'} 1951 | 1952 | /has-symbols/1.0.3: 1953 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1954 | engines: {node: '>= 0.4'} 1955 | 1956 | /has-tostringtag/1.0.0: 1957 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1958 | engines: {node: '>= 0.4'} 1959 | dependencies: 1960 | has-symbols: 1.0.3 1961 | dev: true 1962 | 1963 | /has/1.0.3: 1964 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1965 | engines: {node: '>= 0.4.0'} 1966 | dependencies: 1967 | function-bind: 1.1.1 1968 | 1969 | /hawk/3.1.3: 1970 | resolution: {integrity: sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==} 1971 | engines: {node: '>=0.10.32'} 1972 | deprecated: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. 1973 | dependencies: 1974 | boom: 2.10.1 1975 | cryptiles: 2.0.5 1976 | hoek: 2.16.3 1977 | sntp: 1.0.9 1978 | dev: false 1979 | 1980 | /he/1.2.0: 1981 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1982 | hasBin: true 1983 | dev: false 1984 | 1985 | /hoek/2.16.3: 1986 | resolution: {integrity: sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==} 1987 | engines: {node: '>=0.10.40'} 1988 | deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). 1989 | dev: false 1990 | 1991 | /hoist-non-react-statics/3.3.2: 1992 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1993 | dependencies: 1994 | react-is: 16.13.1 1995 | dev: false 1996 | 1997 | /htmlparser2/3.8.3: 1998 | resolution: {integrity: sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q==} 1999 | dependencies: 2000 | domelementtype: 1.3.1 2001 | domhandler: 2.3.0 2002 | domutils: 1.5.1 2003 | entities: 1.0.0 2004 | readable-stream: 1.1.14 2005 | dev: false 2006 | 2007 | /htmlparser2/8.0.2: 2008 | resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 2009 | dependencies: 2010 | domelementtype: 2.3.0 2011 | domhandler: 5.0.3 2012 | domutils: 3.1.0 2013 | entities: 4.5.0 2014 | dev: false 2015 | 2016 | /http-errors/2.0.0: 2017 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 2018 | engines: {node: '>= 0.8'} 2019 | dependencies: 2020 | depd: 2.0.0 2021 | inherits: 2.0.4 2022 | setprototypeof: 1.2.0 2023 | statuses: 2.0.1 2024 | toidentifier: 1.0.1 2025 | dev: false 2026 | 2027 | /http-signature/0.11.0: 2028 | resolution: {integrity: sha512-Cg0qO4VID3bADaSsfFIh4X0UqktZKlKWM4tRpa2836Xka0U11xGMnX1AQBPyEkzTLc1KDqiQ8UmNB2qRYHe3SQ==} 2029 | engines: {node: '>=0.8'} 2030 | dependencies: 2031 | asn1: 0.1.11 2032 | assert-plus: 0.1.5 2033 | ctype: 0.5.3 2034 | dev: false 2035 | 2036 | /iconv-lite/0.4.24: 2037 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2038 | engines: {node: '>=0.10.0'} 2039 | dependencies: 2040 | safer-buffer: 2.1.2 2041 | dev: false 2042 | 2043 | /iconv-lite/0.6.3: 2044 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2045 | engines: {node: '>=0.10.0'} 2046 | dependencies: 2047 | safer-buffer: 2.1.2 2048 | dev: false 2049 | 2050 | /ignore/5.2.4: 2051 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 2052 | engines: {node: '>= 4'} 2053 | dev: true 2054 | 2055 | /import-fresh/3.3.0: 2056 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2057 | engines: {node: '>=6'} 2058 | dependencies: 2059 | parent-module: 1.0.1 2060 | resolve-from: 4.0.0 2061 | dev: true 2062 | 2063 | /imurmurhash/0.1.4: 2064 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2065 | engines: {node: '>=0.8.19'} 2066 | dev: true 2067 | 2068 | /inflight/1.0.6: 2069 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2070 | dependencies: 2071 | once: 1.4.0 2072 | wrappy: 1.0.2 2073 | dev: true 2074 | 2075 | /inherits/2.0.4: 2076 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2077 | 2078 | /internal-slot/1.0.5: 2079 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 2080 | engines: {node: '>= 0.4'} 2081 | dependencies: 2082 | get-intrinsic: 1.2.1 2083 | has: 1.0.3 2084 | side-channel: 1.0.4 2085 | dev: true 2086 | 2087 | /ipaddr.js/1.9.1: 2088 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 2089 | engines: {node: '>= 0.10'} 2090 | dev: false 2091 | 2092 | /is-arguments/1.1.1: 2093 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} 2094 | engines: {node: '>= 0.4'} 2095 | dependencies: 2096 | call-bind: 1.0.2 2097 | has-tostringtag: 1.0.0 2098 | dev: true 2099 | 2100 | /is-array-buffer/3.0.2: 2101 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 2102 | dependencies: 2103 | call-bind: 1.0.2 2104 | get-intrinsic: 1.2.1 2105 | is-typed-array: 1.1.10 2106 | dev: true 2107 | 2108 | /is-bigint/1.0.4: 2109 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2110 | dependencies: 2111 | has-bigints: 1.0.2 2112 | dev: true 2113 | 2114 | /is-binary-path/2.1.0: 2115 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2116 | engines: {node: '>=8'} 2117 | dependencies: 2118 | binary-extensions: 2.2.0 2119 | dev: true 2120 | 2121 | /is-boolean-object/1.1.2: 2122 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2123 | engines: {node: '>= 0.4'} 2124 | dependencies: 2125 | call-bind: 1.0.2 2126 | has-tostringtag: 1.0.0 2127 | dev: true 2128 | 2129 | /is-buffer/2.0.5: 2130 | resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 2131 | engines: {node: '>=4'} 2132 | dev: false 2133 | 2134 | /is-callable/1.2.7: 2135 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2136 | engines: {node: '>= 0.4'} 2137 | dev: true 2138 | 2139 | /is-core-module/2.12.1: 2140 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 2141 | dependencies: 2142 | has: 1.0.3 2143 | dev: true 2144 | 2145 | /is-date-object/1.0.5: 2146 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2147 | engines: {node: '>= 0.4'} 2148 | dependencies: 2149 | has-tostringtag: 1.0.0 2150 | dev: true 2151 | 2152 | /is-extglob/2.1.1: 2153 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2154 | engines: {node: '>=0.10.0'} 2155 | dev: true 2156 | 2157 | /is-glob/4.0.3: 2158 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2159 | engines: {node: '>=0.10.0'} 2160 | dependencies: 2161 | is-extglob: 2.1.1 2162 | dev: true 2163 | 2164 | /is-map/2.0.2: 2165 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 2166 | dev: true 2167 | 2168 | /is-my-ip-valid/1.0.1: 2169 | resolution: {integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==} 2170 | dev: false 2171 | 2172 | /is-my-json-valid/2.20.6: 2173 | resolution: {integrity: sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==} 2174 | dependencies: 2175 | generate-function: 2.3.1 2176 | generate-object-property: 1.2.0 2177 | is-my-ip-valid: 1.0.1 2178 | jsonpointer: 5.0.1 2179 | xtend: 4.0.2 2180 | dev: false 2181 | 2182 | /is-negative-zero/2.0.2: 2183 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2184 | engines: {node: '>= 0.4'} 2185 | dev: true 2186 | 2187 | /is-number-object/1.0.7: 2188 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2189 | engines: {node: '>= 0.4'} 2190 | dependencies: 2191 | has-tostringtag: 1.0.0 2192 | dev: true 2193 | 2194 | /is-number/7.0.0: 2195 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2196 | engines: {node: '>=0.12.0'} 2197 | dev: true 2198 | 2199 | /is-path-inside/3.0.3: 2200 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2201 | engines: {node: '>=8'} 2202 | dev: true 2203 | 2204 | /is-plain-obj/2.1.0: 2205 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 2206 | engines: {node: '>=8'} 2207 | dev: false 2208 | 2209 | /is-property/1.0.2: 2210 | resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} 2211 | dev: false 2212 | 2213 | /is-regex/1.1.4: 2214 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2215 | engines: {node: '>= 0.4'} 2216 | dependencies: 2217 | call-bind: 1.0.2 2218 | has-tostringtag: 1.0.0 2219 | dev: true 2220 | 2221 | /is-set/2.0.2: 2222 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2223 | dev: true 2224 | 2225 | /is-shared-array-buffer/1.0.2: 2226 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2227 | dependencies: 2228 | call-bind: 1.0.2 2229 | dev: true 2230 | 2231 | /is-string/1.0.7: 2232 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2233 | engines: {node: '>= 0.4'} 2234 | dependencies: 2235 | has-tostringtag: 1.0.0 2236 | dev: true 2237 | 2238 | /is-symbol/1.0.4: 2239 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2240 | engines: {node: '>= 0.4'} 2241 | dependencies: 2242 | has-symbols: 1.0.3 2243 | dev: true 2244 | 2245 | /is-typed-array/1.1.10: 2246 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 2247 | engines: {node: '>= 0.4'} 2248 | dependencies: 2249 | available-typed-arrays: 1.0.5 2250 | call-bind: 1.0.2 2251 | for-each: 0.3.3 2252 | gopd: 1.0.1 2253 | has-tostringtag: 1.0.0 2254 | dev: true 2255 | 2256 | /is-weakmap/2.0.1: 2257 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2258 | dev: true 2259 | 2260 | /is-weakref/1.0.2: 2261 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2262 | dependencies: 2263 | call-bind: 1.0.2 2264 | dev: true 2265 | 2266 | /is-weakset/2.0.2: 2267 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 2268 | dependencies: 2269 | call-bind: 1.0.2 2270 | get-intrinsic: 1.2.1 2271 | dev: true 2272 | 2273 | /isarray/0.0.1: 2274 | resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} 2275 | dev: false 2276 | 2277 | /isarray/1.0.0: 2278 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 2279 | dev: false 2280 | 2281 | /isarray/2.0.5: 2282 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2283 | dev: true 2284 | 2285 | /isexe/2.0.0: 2286 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2287 | 2288 | /isstream/0.1.2: 2289 | resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} 2290 | dev: false 2291 | 2292 | /jiti/1.18.2: 2293 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 2294 | hasBin: true 2295 | dev: true 2296 | 2297 | /js-tokens/4.0.0: 2298 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2299 | 2300 | /js-yaml/4.1.0: 2301 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2302 | hasBin: true 2303 | dependencies: 2304 | argparse: 2.0.1 2305 | dev: true 2306 | 2307 | /json-schema-traverse/0.4.1: 2308 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2309 | dev: true 2310 | 2311 | /json-stable-stringify-without-jsonify/1.0.1: 2312 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2313 | dev: true 2314 | 2315 | /json-stringify-safe/5.0.1: 2316 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 2317 | dev: false 2318 | 2319 | /json5/1.0.2: 2320 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2321 | hasBin: true 2322 | dependencies: 2323 | minimist: 1.2.8 2324 | dev: true 2325 | 2326 | /jsonpointer/5.0.1: 2327 | resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} 2328 | engines: {node: '>=0.10.0'} 2329 | dev: false 2330 | 2331 | /jsx-ast-utils/3.3.3: 2332 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 2333 | engines: {node: '>=4.0'} 2334 | dependencies: 2335 | array-includes: 3.1.6 2336 | object.assign: 4.1.4 2337 | dev: true 2338 | 2339 | /language-subtag-registry/0.3.22: 2340 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2341 | dev: true 2342 | 2343 | /language-tags/1.0.5: 2344 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 2345 | dependencies: 2346 | language-subtag-registry: 0.3.22 2347 | dev: true 2348 | 2349 | /levn/0.4.1: 2350 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2351 | engines: {node: '>= 0.8.0'} 2352 | dependencies: 2353 | prelude-ls: 1.2.1 2354 | type-check: 0.4.0 2355 | dev: true 2356 | 2357 | /lilconfig/2.1.0: 2358 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2359 | engines: {node: '>=10'} 2360 | dev: true 2361 | 2362 | /lines-and-columns/1.2.4: 2363 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2364 | dev: true 2365 | 2366 | /locate-path/6.0.0: 2367 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2368 | engines: {node: '>=10'} 2369 | dependencies: 2370 | p-locate: 5.0.0 2371 | dev: true 2372 | 2373 | /lodash.merge/4.6.2: 2374 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2375 | dev: true 2376 | 2377 | /lodash/3.10.1: 2378 | resolution: {integrity: sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==} 2379 | dev: false 2380 | 2381 | /lodash/4.17.21: 2382 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2383 | dev: false 2384 | 2385 | /loose-envify/1.4.0: 2386 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2387 | hasBin: true 2388 | dependencies: 2389 | js-tokens: 4.0.0 2390 | 2391 | /lru-cache/6.0.0: 2392 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2393 | engines: {node: '>=10'} 2394 | dependencies: 2395 | yallist: 4.0.0 2396 | dev: true 2397 | 2398 | /media-typer/0.3.0: 2399 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 2400 | engines: {node: '>= 0.6'} 2401 | dev: false 2402 | 2403 | /merge-descriptors/1.0.1: 2404 | resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} 2405 | dev: false 2406 | 2407 | /merge2/1.4.1: 2408 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2409 | engines: {node: '>= 8'} 2410 | dev: true 2411 | 2412 | /methods/1.1.2: 2413 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 2414 | engines: {node: '>= 0.6'} 2415 | dev: false 2416 | 2417 | /micromatch/4.0.5: 2418 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2419 | engines: {node: '>=8.6'} 2420 | dependencies: 2421 | braces: 3.0.2 2422 | picomatch: 2.3.1 2423 | dev: true 2424 | 2425 | /mime-db/1.52.0: 2426 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2427 | engines: {node: '>= 0.6'} 2428 | dev: false 2429 | 2430 | /mime-types/2.1.35: 2431 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2432 | engines: {node: '>= 0.6'} 2433 | dependencies: 2434 | mime-db: 1.52.0 2435 | dev: false 2436 | 2437 | /mime/1.6.0: 2438 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 2439 | engines: {node: '>=4'} 2440 | hasBin: true 2441 | dev: false 2442 | 2443 | /minimatch/3.1.2: 2444 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2445 | dependencies: 2446 | brace-expansion: 1.1.11 2447 | dev: true 2448 | 2449 | /minimist/1.2.8: 2450 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2451 | dev: true 2452 | 2453 | /ms/2.0.0: 2454 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2455 | dev: false 2456 | 2457 | /ms/2.1.2: 2458 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2459 | dev: true 2460 | 2461 | /ms/2.1.3: 2462 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2463 | 2464 | /mz/2.7.0: 2465 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2466 | dependencies: 2467 | any-promise: 1.3.0 2468 | object-assign: 4.1.1 2469 | thenify-all: 1.6.0 2470 | dev: true 2471 | 2472 | /nanoid/3.3.6: 2473 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2474 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2475 | hasBin: true 2476 | 2477 | /natural-compare/1.4.0: 2478 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2479 | dev: true 2480 | 2481 | /negotiator/0.6.3: 2482 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 2483 | engines: {node: '>= 0.6'} 2484 | dev: false 2485 | 2486 | /next/13.4.3_biqbaboplfbrettd7655fr4n2y: 2487 | resolution: {integrity: sha512-FV3pBrAAnAIfOclTvncw9dDohyeuEEXPe5KNcva91anT/rdycWbgtu3IjUj4n5yHnWK8YEPo0vrUecHmnmUNbA==} 2488 | engines: {node: '>=16.8.0'} 2489 | hasBin: true 2490 | peerDependencies: 2491 | '@opentelemetry/api': ^1.1.0 2492 | fibers: '>= 3.1.0' 2493 | node-sass: ^6.0.0 || ^7.0.0 2494 | react: ^18.2.0 2495 | react-dom: ^18.2.0 2496 | sass: ^1.3.0 2497 | peerDependenciesMeta: 2498 | '@opentelemetry/api': 2499 | optional: true 2500 | fibers: 2501 | optional: true 2502 | node-sass: 2503 | optional: true 2504 | sass: 2505 | optional: true 2506 | dependencies: 2507 | '@next/env': 13.4.3 2508 | '@swc/helpers': 0.5.1 2509 | busboy: 1.6.0 2510 | caniuse-lite: 1.0.30001489 2511 | postcss: 8.4.14 2512 | react: 18.2.0 2513 | react-dom: 18.2.0_react@18.2.0 2514 | styled-jsx: 5.1.1_react@18.2.0 2515 | zod: 3.21.4 2516 | optionalDependencies: 2517 | '@next/swc-darwin-arm64': 13.4.3 2518 | '@next/swc-darwin-x64': 13.4.3 2519 | '@next/swc-linux-arm64-gnu': 13.4.3 2520 | '@next/swc-linux-arm64-musl': 13.4.3 2521 | '@next/swc-linux-x64-gnu': 13.4.3 2522 | '@next/swc-linux-x64-musl': 13.4.3 2523 | '@next/swc-win32-arm64-msvc': 13.4.3 2524 | '@next/swc-win32-ia32-msvc': 13.4.3 2525 | '@next/swc-win32-x64-msvc': 13.4.3 2526 | transitivePeerDependencies: 2527 | - '@babel/core' 2528 | - babel-plugin-macros 2529 | dev: false 2530 | 2531 | /node-fetch/2.6.11_encoding@0.1.13: 2532 | resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} 2533 | engines: {node: 4.x || >=6.0.0} 2534 | peerDependencies: 2535 | encoding: ^0.1.0 2536 | peerDependenciesMeta: 2537 | encoding: 2538 | optional: true 2539 | dependencies: 2540 | encoding: 0.1.13 2541 | whatwg-url: 5.0.0 2542 | dev: false 2543 | 2544 | /node-html-markdown/1.3.0: 2545 | resolution: {integrity: sha512-OeFi3QwC/cPjvVKZ114tzzu+YoR+v9UXW5RwSXGUqGb0qCl0DvP406tzdL7SFn8pZrMyzXoisfG2zcuF9+zw4g==} 2546 | engines: {node: '>=10.0.0'} 2547 | dependencies: 2548 | node-html-parser: 6.1.5 2549 | dev: false 2550 | 2551 | /node-html-parser/6.1.5: 2552 | resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==} 2553 | dependencies: 2554 | css-select: 5.1.0 2555 | he: 1.2.0 2556 | dev: false 2557 | 2558 | /node-releases/2.0.11: 2559 | resolution: {integrity: sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==} 2560 | dev: true 2561 | 2562 | /node-spider/1.4.1: 2563 | resolution: {integrity: sha512-kVs2EBYFXv2TqfwW0n/aI9FUKwJgB6Lo20r6BqW8F37XCge61qVTl5M8FTx6pUux1TGlgwP7LCmTzgk22LEIXg==} 2564 | dependencies: 2565 | cheerio: 0.19.0 2566 | request: 2.61.0 2567 | dev: false 2568 | 2569 | /node-uuid/1.4.8: 2570 | resolution: {integrity: sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==} 2571 | deprecated: Use uuid module instead 2572 | hasBin: true 2573 | dev: false 2574 | 2575 | /normalize-path/3.0.0: 2576 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2577 | engines: {node: '>=0.10.0'} 2578 | dev: true 2579 | 2580 | /normalize-range/0.1.2: 2581 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2582 | engines: {node: '>=0.10.0'} 2583 | dev: true 2584 | 2585 | /nth-check/1.0.2: 2586 | resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} 2587 | dependencies: 2588 | boolbase: 1.0.0 2589 | dev: false 2590 | 2591 | /nth-check/2.1.1: 2592 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2593 | dependencies: 2594 | boolbase: 1.0.0 2595 | dev: false 2596 | 2597 | /oauth-sign/0.8.2: 2598 | resolution: {integrity: sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==} 2599 | dev: false 2600 | 2601 | /object-assign/4.1.1: 2602 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2603 | engines: {node: '>=0.10.0'} 2604 | dev: true 2605 | 2606 | /object-hash/3.0.0: 2607 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2608 | engines: {node: '>= 6'} 2609 | dev: true 2610 | 2611 | /object-inspect/1.12.3: 2612 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 2613 | 2614 | /object-is/1.1.5: 2615 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 2616 | engines: {node: '>= 0.4'} 2617 | dependencies: 2618 | call-bind: 1.0.2 2619 | define-properties: 1.2.0 2620 | dev: true 2621 | 2622 | /object-keys/1.1.1: 2623 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2624 | engines: {node: '>= 0.4'} 2625 | dev: true 2626 | 2627 | /object.assign/4.1.4: 2628 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2629 | engines: {node: '>= 0.4'} 2630 | dependencies: 2631 | call-bind: 1.0.2 2632 | define-properties: 1.2.0 2633 | has-symbols: 1.0.3 2634 | object-keys: 1.1.1 2635 | dev: true 2636 | 2637 | /object.entries/1.1.6: 2638 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 2639 | engines: {node: '>= 0.4'} 2640 | dependencies: 2641 | call-bind: 1.0.2 2642 | define-properties: 1.2.0 2643 | es-abstract: 1.21.2 2644 | dev: true 2645 | 2646 | /object.fromentries/2.0.6: 2647 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 2648 | engines: {node: '>= 0.4'} 2649 | dependencies: 2650 | call-bind: 1.0.2 2651 | define-properties: 1.2.0 2652 | es-abstract: 1.21.2 2653 | dev: true 2654 | 2655 | /object.hasown/1.1.2: 2656 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 2657 | dependencies: 2658 | define-properties: 1.2.0 2659 | es-abstract: 1.21.2 2660 | dev: true 2661 | 2662 | /object.values/1.1.6: 2663 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2664 | engines: {node: '>= 0.4'} 2665 | dependencies: 2666 | call-bind: 1.0.2 2667 | define-properties: 1.2.0 2668 | es-abstract: 1.21.2 2669 | dev: true 2670 | 2671 | /on-finished/2.4.1: 2672 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 2673 | engines: {node: '>= 0.8'} 2674 | dependencies: 2675 | ee-first: 1.1.1 2676 | dev: false 2677 | 2678 | /once/1.4.0: 2679 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2680 | dependencies: 2681 | wrappy: 1.0.2 2682 | dev: true 2683 | 2684 | /openai/3.2.1: 2685 | resolution: {integrity: sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==} 2686 | dependencies: 2687 | axios: 0.26.1 2688 | form-data: 4.0.0 2689 | transitivePeerDependencies: 2690 | - debug 2691 | dev: false 2692 | 2693 | /optionator/0.9.1: 2694 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2695 | engines: {node: '>= 0.8.0'} 2696 | dependencies: 2697 | deep-is: 0.1.4 2698 | fast-levenshtein: 2.0.6 2699 | levn: 0.4.1 2700 | prelude-ls: 1.2.1 2701 | type-check: 0.4.0 2702 | word-wrap: 1.2.3 2703 | dev: true 2704 | 2705 | /p-limit/3.1.0: 2706 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2707 | engines: {node: '>=10'} 2708 | dependencies: 2709 | yocto-queue: 0.1.0 2710 | dev: true 2711 | 2712 | /p-locate/5.0.0: 2713 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2714 | engines: {node: '>=10'} 2715 | dependencies: 2716 | p-limit: 3.1.0 2717 | dev: true 2718 | 2719 | /parent-module/1.0.1: 2720 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2721 | engines: {node: '>=6'} 2722 | dependencies: 2723 | callsites: 3.1.0 2724 | dev: true 2725 | 2726 | /parse5-htmlparser2-tree-adapter/7.0.0: 2727 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 2728 | dependencies: 2729 | domhandler: 5.0.3 2730 | parse5: 7.1.2 2731 | dev: false 2732 | 2733 | /parse5/1.5.1: 2734 | resolution: {integrity: sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==} 2735 | dev: false 2736 | 2737 | /parse5/7.1.2: 2738 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 2739 | dependencies: 2740 | entities: 4.5.0 2741 | dev: false 2742 | 2743 | /parseurl/1.3.3: 2744 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2745 | engines: {node: '>= 0.8'} 2746 | dev: false 2747 | 2748 | /path-exists/4.0.0: 2749 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2750 | engines: {node: '>=8'} 2751 | dev: true 2752 | 2753 | /path-is-absolute/1.0.1: 2754 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2755 | engines: {node: '>=0.10.0'} 2756 | dev: true 2757 | 2758 | /path-key/3.1.1: 2759 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2760 | engines: {node: '>=8'} 2761 | 2762 | /path-parse/1.0.7: 2763 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2764 | dev: true 2765 | 2766 | /path-to-regexp/0.1.7: 2767 | resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} 2768 | dev: false 2769 | 2770 | /path-type/4.0.0: 2771 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2772 | engines: {node: '>=8'} 2773 | dev: true 2774 | 2775 | /picocolors/1.0.0: 2776 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2777 | 2778 | /picomatch/2.3.1: 2779 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2780 | engines: {node: '>=8.6'} 2781 | dev: true 2782 | 2783 | /pify/2.3.0: 2784 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2785 | engines: {node: '>=0.10.0'} 2786 | dev: true 2787 | 2788 | /pirates/4.0.5: 2789 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2790 | engines: {node: '>= 6'} 2791 | dev: true 2792 | 2793 | /postcss-import/15.1.0_postcss@8.4.23: 2794 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2795 | engines: {node: '>=14.0.0'} 2796 | peerDependencies: 2797 | postcss: ^8.0.0 2798 | dependencies: 2799 | postcss: 8.4.23 2800 | postcss-value-parser: 4.2.0 2801 | read-cache: 1.0.0 2802 | resolve: 1.22.2 2803 | dev: true 2804 | 2805 | /postcss-js/4.0.1_postcss@8.4.23: 2806 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2807 | engines: {node: ^12 || ^14 || >= 16} 2808 | peerDependencies: 2809 | postcss: ^8.4.21 2810 | dependencies: 2811 | camelcase-css: 2.0.1 2812 | postcss: 8.4.23 2813 | dev: true 2814 | 2815 | /postcss-load-config/4.0.1_postcss@8.4.23: 2816 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 2817 | engines: {node: '>= 14'} 2818 | peerDependencies: 2819 | postcss: '>=8.0.9' 2820 | ts-node: '>=9.0.0' 2821 | peerDependenciesMeta: 2822 | postcss: 2823 | optional: true 2824 | ts-node: 2825 | optional: true 2826 | dependencies: 2827 | lilconfig: 2.1.0 2828 | postcss: 8.4.23 2829 | yaml: 2.2.2 2830 | dev: true 2831 | 2832 | /postcss-nested/6.0.1_postcss@8.4.23: 2833 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2834 | engines: {node: '>=12.0'} 2835 | peerDependencies: 2836 | postcss: ^8.2.14 2837 | dependencies: 2838 | postcss: 8.4.23 2839 | postcss-selector-parser: 6.0.13 2840 | dev: true 2841 | 2842 | /postcss-selector-parser/6.0.13: 2843 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 2844 | engines: {node: '>=4'} 2845 | dependencies: 2846 | cssesc: 3.0.0 2847 | util-deprecate: 1.0.2 2848 | dev: true 2849 | 2850 | /postcss-value-parser/4.2.0: 2851 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2852 | dev: true 2853 | 2854 | /postcss/8.4.14: 2855 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 2856 | engines: {node: ^10 || ^12 || >=14} 2857 | dependencies: 2858 | nanoid: 3.3.6 2859 | picocolors: 1.0.0 2860 | source-map-js: 1.0.2 2861 | dev: false 2862 | 2863 | /postcss/8.4.23: 2864 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} 2865 | engines: {node: ^10 || ^12 || >=14} 2866 | dependencies: 2867 | nanoid: 3.3.6 2868 | picocolors: 1.0.0 2869 | source-map-js: 1.0.2 2870 | dev: true 2871 | 2872 | /prelude-ls/1.2.1: 2873 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2874 | engines: {node: '>= 0.8.0'} 2875 | dev: true 2876 | 2877 | /process-nextick-args/1.0.7: 2878 | resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} 2879 | dev: false 2880 | 2881 | /prop-types/15.8.1: 2882 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2883 | dependencies: 2884 | loose-envify: 1.4.0 2885 | object-assign: 4.1.1 2886 | react-is: 16.13.1 2887 | dev: true 2888 | 2889 | /proxy-addr/2.0.7: 2890 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2891 | engines: {node: '>= 0.10'} 2892 | dependencies: 2893 | forwarded: 0.2.0 2894 | ipaddr.js: 1.9.1 2895 | dev: false 2896 | 2897 | /psl/1.9.0: 2898 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 2899 | dev: false 2900 | 2901 | /punycode/2.3.0: 2902 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2903 | engines: {node: '>=6'} 2904 | 2905 | /qs/4.0.0: 2906 | resolution: {integrity: sha512-8MPmJ83uBOPsQj5tQCv4g04/nTiY+d17yl9o3Bw73vC6XlEm2POIRRlOgWJ8i74bkGLII670cDJJZkgiZ2sIkg==} 2907 | dev: false 2908 | 2909 | /qs/6.11.0: 2910 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 2911 | engines: {node: '>=0.6'} 2912 | dependencies: 2913 | side-channel: 1.0.4 2914 | dev: false 2915 | 2916 | /querystringify/2.2.0: 2917 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 2918 | dev: false 2919 | 2920 | /queue-microtask/1.2.3: 2921 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2922 | dev: true 2923 | 2924 | /range-parser/1.2.1: 2925 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2926 | engines: {node: '>= 0.6'} 2927 | dev: false 2928 | 2929 | /raw-body/2.5.1: 2930 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 2931 | engines: {node: '>= 0.8'} 2932 | dependencies: 2933 | bytes: 3.1.2 2934 | http-errors: 2.0.0 2935 | iconv-lite: 0.4.24 2936 | unpipe: 1.0.0 2937 | dev: false 2938 | 2939 | /react-cookie/4.1.1_react@18.2.0: 2940 | resolution: {integrity: sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==} 2941 | peerDependencies: 2942 | react: '>= 16.3.0' 2943 | dependencies: 2944 | '@types/hoist-non-react-statics': 3.3.1 2945 | hoist-non-react-statics: 3.3.2 2946 | react: 18.2.0 2947 | universal-cookie: 4.0.4 2948 | dev: false 2949 | 2950 | /react-dom/18.2.0_react@18.2.0: 2951 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2952 | peerDependencies: 2953 | react: ^18.2.0 2954 | dependencies: 2955 | loose-envify: 1.4.0 2956 | react: 18.2.0 2957 | scheduler: 0.23.0 2958 | dev: false 2959 | 2960 | /react-is/16.13.1: 2961 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2962 | 2963 | /react-wrap-balancer/0.1.5_react@18.2.0: 2964 | resolution: {integrity: sha512-2gB/xQEgG4XR0F4W7FUkALhyeXkLR5Ly9CfqFNDb/1FfGTNVn3U458+r4D+pGsEMsVvnUtFsG7S0IihyWKGuYA==} 2965 | peerDependencies: 2966 | react: ^18.0.0 2967 | dependencies: 2968 | react: 18.2.0 2969 | dev: false 2970 | 2971 | /react/18.2.0: 2972 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2973 | engines: {node: '>=0.10.0'} 2974 | dependencies: 2975 | loose-envify: 1.4.0 2976 | dev: false 2977 | 2978 | /read-cache/1.0.0: 2979 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2980 | dependencies: 2981 | pify: 2.3.0 2982 | dev: true 2983 | 2984 | /readable-stream/1.1.14: 2985 | resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} 2986 | dependencies: 2987 | core-util-is: 1.0.3 2988 | inherits: 2.0.4 2989 | isarray: 0.0.1 2990 | string_decoder: 0.10.31 2991 | dev: false 2992 | 2993 | /readable-stream/2.0.6: 2994 | resolution: {integrity: sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==} 2995 | dependencies: 2996 | core-util-is: 1.0.3 2997 | inherits: 2.0.4 2998 | isarray: 1.0.0 2999 | process-nextick-args: 1.0.7 3000 | string_decoder: 0.10.31 3001 | util-deprecate: 1.0.2 3002 | dev: false 3003 | 3004 | /readdirp/3.6.0: 3005 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3006 | engines: {node: '>=8.10.0'} 3007 | dependencies: 3008 | picomatch: 2.3.1 3009 | dev: true 3010 | 3011 | /regenerator-runtime/0.13.11: 3012 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 3013 | dev: true 3014 | 3015 | /regexp.prototype.flags/1.5.0: 3016 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 3017 | engines: {node: '>= 0.4'} 3018 | dependencies: 3019 | call-bind: 1.0.2 3020 | define-properties: 1.2.0 3021 | functions-have-names: 1.2.3 3022 | dev: true 3023 | 3024 | /request/2.61.0: 3025 | resolution: {integrity: sha512-VzuqfRVF3Fy53F+dgzN3yf1S2P+Jf5CygTa5CSCn5UYfZgeRK7GgshyKEKjCs1fOAFLFVaBkVJSSb+yh9vTsKw==} 3026 | engines: {node: '>=0.8.0'} 3027 | deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 3028 | dependencies: 3029 | aws-sign2: 0.5.0 3030 | bl: 1.0.3 3031 | caseless: 0.11.0 3032 | combined-stream: 1.0.8 3033 | extend: 3.0.2 3034 | forever-agent: 0.6.1 3035 | form-data: 1.0.1 3036 | har-validator: 1.8.0 3037 | hawk: 3.1.3 3038 | http-signature: 0.11.0 3039 | isstream: 0.1.2 3040 | json-stringify-safe: 5.0.1 3041 | mime-types: 2.1.35 3042 | node-uuid: 1.4.8 3043 | oauth-sign: 0.8.2 3044 | qs: 4.0.0 3045 | stringstream: 0.0.6 3046 | tough-cookie: 4.1.2 3047 | tunnel-agent: 0.4.3 3048 | dev: false 3049 | 3050 | /requires-port/1.0.0: 3051 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 3052 | dev: false 3053 | 3054 | /resolve-from/4.0.0: 3055 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3056 | engines: {node: '>=4'} 3057 | dev: true 3058 | 3059 | /resolve/1.22.2: 3060 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 3061 | hasBin: true 3062 | dependencies: 3063 | is-core-module: 2.12.1 3064 | path-parse: 1.0.7 3065 | supports-preserve-symlinks-flag: 1.0.0 3066 | dev: true 3067 | 3068 | /resolve/2.0.0-next.4: 3069 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 3070 | hasBin: true 3071 | dependencies: 3072 | is-core-module: 2.12.1 3073 | path-parse: 1.0.7 3074 | supports-preserve-symlinks-flag: 1.0.0 3075 | dev: true 3076 | 3077 | /reusify/1.0.4: 3078 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3079 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3080 | dev: true 3081 | 3082 | /rimraf/3.0.2: 3083 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3084 | hasBin: true 3085 | dependencies: 3086 | glob: 7.2.3 3087 | dev: true 3088 | 3089 | /run-parallel/1.2.0: 3090 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3091 | dependencies: 3092 | queue-microtask: 1.2.3 3093 | dev: true 3094 | 3095 | /safe-buffer/5.2.1: 3096 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3097 | dev: false 3098 | 3099 | /safe-regex-test/1.0.0: 3100 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 3101 | dependencies: 3102 | call-bind: 1.0.2 3103 | get-intrinsic: 1.2.1 3104 | is-regex: 1.1.4 3105 | dev: true 3106 | 3107 | /safer-buffer/2.1.2: 3108 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3109 | dev: false 3110 | 3111 | /scheduler/0.23.0: 3112 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 3113 | dependencies: 3114 | loose-envify: 1.4.0 3115 | dev: false 3116 | 3117 | /semver/6.3.0: 3118 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 3119 | hasBin: true 3120 | dev: true 3121 | 3122 | /semver/7.5.1: 3123 | resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} 3124 | engines: {node: '>=10'} 3125 | hasBin: true 3126 | dependencies: 3127 | lru-cache: 6.0.0 3128 | dev: true 3129 | 3130 | /send/0.18.0: 3131 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 3132 | engines: {node: '>= 0.8.0'} 3133 | dependencies: 3134 | debug: 2.6.9 3135 | depd: 2.0.0 3136 | destroy: 1.2.0 3137 | encodeurl: 1.0.2 3138 | escape-html: 1.0.3 3139 | etag: 1.8.1 3140 | fresh: 0.5.2 3141 | http-errors: 2.0.0 3142 | mime: 1.6.0 3143 | ms: 2.1.3 3144 | on-finished: 2.4.1 3145 | range-parser: 1.2.1 3146 | statuses: 2.0.1 3147 | transitivePeerDependencies: 3148 | - supports-color 3149 | dev: false 3150 | 3151 | /serve-static/1.15.0: 3152 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 3153 | engines: {node: '>= 0.8.0'} 3154 | dependencies: 3155 | encodeurl: 1.0.2 3156 | escape-html: 1.0.3 3157 | parseurl: 1.3.3 3158 | send: 0.18.0 3159 | transitivePeerDependencies: 3160 | - supports-color 3161 | dev: false 3162 | 3163 | /setprototypeof/1.2.0: 3164 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 3165 | dev: false 3166 | 3167 | /shebang-command/2.0.0: 3168 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3169 | engines: {node: '>=8'} 3170 | dependencies: 3171 | shebang-regex: 3.0.0 3172 | 3173 | /shebang-regex/3.0.0: 3174 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3175 | engines: {node: '>=8'} 3176 | 3177 | /side-channel/1.0.4: 3178 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3179 | dependencies: 3180 | call-bind: 1.0.2 3181 | get-intrinsic: 1.2.1 3182 | object-inspect: 1.12.3 3183 | 3184 | /slash/3.0.0: 3185 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3186 | engines: {node: '>=8'} 3187 | dev: true 3188 | 3189 | /sntp/1.0.9: 3190 | resolution: {integrity: sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==} 3191 | engines: {node: '>=0.8.0'} 3192 | deprecated: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. 3193 | dependencies: 3194 | hoek: 2.16.3 3195 | dev: false 3196 | 3197 | /source-map-js/1.0.2: 3198 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3199 | engines: {node: '>=0.10.0'} 3200 | 3201 | /statuses/2.0.1: 3202 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 3203 | engines: {node: '>= 0.8'} 3204 | dev: false 3205 | 3206 | /stop-iteration-iterator/1.0.0: 3207 | resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} 3208 | engines: {node: '>= 0.4'} 3209 | dependencies: 3210 | internal-slot: 1.0.5 3211 | dev: true 3212 | 3213 | /streamsearch/1.1.0: 3214 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 3215 | engines: {node: '>=10.0.0'} 3216 | dev: false 3217 | 3218 | /string.prototype.matchall/4.0.8: 3219 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 3220 | dependencies: 3221 | call-bind: 1.0.2 3222 | define-properties: 1.2.0 3223 | es-abstract: 1.21.2 3224 | get-intrinsic: 1.2.1 3225 | has-symbols: 1.0.3 3226 | internal-slot: 1.0.5 3227 | regexp.prototype.flags: 1.5.0 3228 | side-channel: 1.0.4 3229 | dev: true 3230 | 3231 | /string.prototype.trim/1.2.7: 3232 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 3233 | engines: {node: '>= 0.4'} 3234 | dependencies: 3235 | call-bind: 1.0.2 3236 | define-properties: 1.2.0 3237 | es-abstract: 1.21.2 3238 | dev: true 3239 | 3240 | /string.prototype.trimend/1.0.6: 3241 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 3242 | dependencies: 3243 | call-bind: 1.0.2 3244 | define-properties: 1.2.0 3245 | es-abstract: 1.21.2 3246 | dev: true 3247 | 3248 | /string.prototype.trimstart/1.0.6: 3249 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 3250 | dependencies: 3251 | call-bind: 1.0.2 3252 | define-properties: 1.2.0 3253 | es-abstract: 1.21.2 3254 | dev: true 3255 | 3256 | /string_decoder/0.10.31: 3257 | resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} 3258 | dev: false 3259 | 3260 | /stringstream/0.0.6: 3261 | resolution: {integrity: sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==} 3262 | dev: false 3263 | 3264 | /strip-ansi/3.0.1: 3265 | resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} 3266 | engines: {node: '>=0.10.0'} 3267 | dependencies: 3268 | ansi-regex: 2.1.1 3269 | dev: false 3270 | 3271 | /strip-ansi/6.0.1: 3272 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3273 | engines: {node: '>=8'} 3274 | dependencies: 3275 | ansi-regex: 5.0.1 3276 | dev: true 3277 | 3278 | /strip-bom/3.0.0: 3279 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3280 | engines: {node: '>=4'} 3281 | dev: true 3282 | 3283 | /strip-json-comments/3.1.1: 3284 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3285 | engines: {node: '>=8'} 3286 | dev: true 3287 | 3288 | /styled-jsx/5.1.1_react@18.2.0: 3289 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 3290 | engines: {node: '>= 12.0.0'} 3291 | peerDependencies: 3292 | '@babel/core': '*' 3293 | babel-plugin-macros: '*' 3294 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 3295 | peerDependenciesMeta: 3296 | '@babel/core': 3297 | optional: true 3298 | babel-plugin-macros: 3299 | optional: true 3300 | dependencies: 3301 | client-only: 0.0.1 3302 | react: 18.2.0 3303 | dev: false 3304 | 3305 | /sucrase/3.32.0: 3306 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} 3307 | engines: {node: '>=8'} 3308 | hasBin: true 3309 | dependencies: 3310 | '@jridgewell/gen-mapping': 0.3.3 3311 | commander: 4.1.1 3312 | glob: 7.1.6 3313 | lines-and-columns: 1.2.4 3314 | mz: 2.7.0 3315 | pirates: 4.0.5 3316 | ts-interface-checker: 0.1.13 3317 | dev: true 3318 | 3319 | /sugar-high/0.4.6: 3320 | resolution: {integrity: sha512-V/5BlmDTQ0YCD6o+xumBpOBP8CWDqVDA8Pt7W/i8QzkwFnYwBxX9T4a8XRmay7ulnnCj/5rX3f845tbkXU1lIw==} 3321 | dev: false 3322 | 3323 | /supports-color/2.0.0: 3324 | resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} 3325 | engines: {node: '>=0.8.0'} 3326 | dev: false 3327 | 3328 | /supports-color/7.2.0: 3329 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3330 | engines: {node: '>=8'} 3331 | dependencies: 3332 | has-flag: 4.0.0 3333 | dev: true 3334 | 3335 | /supports-preserve-symlinks-flag/1.0.0: 3336 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3337 | engines: {node: '>= 0.4'} 3338 | dev: true 3339 | 3340 | /tailwindcss/3.3.2: 3341 | resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} 3342 | engines: {node: '>=14.0.0'} 3343 | hasBin: true 3344 | dependencies: 3345 | '@alloc/quick-lru': 5.2.0 3346 | arg: 5.0.2 3347 | chokidar: 3.5.3 3348 | didyoumean: 1.2.2 3349 | dlv: 1.1.3 3350 | fast-glob: 3.2.12 3351 | glob-parent: 6.0.2 3352 | is-glob: 4.0.3 3353 | jiti: 1.18.2 3354 | lilconfig: 2.1.0 3355 | micromatch: 4.0.5 3356 | normalize-path: 3.0.0 3357 | object-hash: 3.0.0 3358 | picocolors: 1.0.0 3359 | postcss: 8.4.23 3360 | postcss-import: 15.1.0_postcss@8.4.23 3361 | postcss-js: 4.0.1_postcss@8.4.23 3362 | postcss-load-config: 4.0.1_postcss@8.4.23 3363 | postcss-nested: 6.0.1_postcss@8.4.23 3364 | postcss-selector-parser: 6.0.13 3365 | postcss-value-parser: 4.2.0 3366 | resolve: 1.22.2 3367 | sucrase: 3.32.0 3368 | transitivePeerDependencies: 3369 | - ts-node 3370 | dev: true 3371 | 3372 | /text-table/0.2.0: 3373 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3374 | dev: true 3375 | 3376 | /thenify-all/1.6.0: 3377 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3378 | engines: {node: '>=0.8'} 3379 | dependencies: 3380 | thenify: 3.3.1 3381 | dev: true 3382 | 3383 | /thenify/3.3.1: 3384 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3385 | dependencies: 3386 | any-promise: 1.3.0 3387 | dev: true 3388 | 3389 | /to-regex-range/5.0.1: 3390 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3391 | engines: {node: '>=8.0'} 3392 | dependencies: 3393 | is-number: 7.0.0 3394 | dev: true 3395 | 3396 | /toidentifier/1.0.1: 3397 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 3398 | engines: {node: '>=0.6'} 3399 | dev: false 3400 | 3401 | /tough-cookie/4.1.2: 3402 | resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} 3403 | engines: {node: '>=6'} 3404 | dependencies: 3405 | psl: 1.9.0 3406 | punycode: 2.3.0 3407 | universalify: 0.2.0 3408 | url-parse: 1.5.10 3409 | dev: false 3410 | 3411 | /tr46/0.0.3: 3412 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3413 | dev: false 3414 | 3415 | /trough/1.0.5: 3416 | resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} 3417 | dev: false 3418 | 3419 | /ts-interface-checker/0.1.13: 3420 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3421 | dev: true 3422 | 3423 | /tsconfig-paths/3.14.2: 3424 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 3425 | dependencies: 3426 | '@types/json5': 0.0.29 3427 | json5: 1.0.2 3428 | minimist: 1.2.8 3429 | strip-bom: 3.0.0 3430 | dev: true 3431 | 3432 | /tslib/1.14.1: 3433 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3434 | dev: true 3435 | 3436 | /tslib/2.5.2: 3437 | resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} 3438 | dev: false 3439 | 3440 | /tsutils/3.21.0_typescript@4.9.5: 3441 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3442 | engines: {node: '>= 6'} 3443 | peerDependencies: 3444 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 3445 | dependencies: 3446 | tslib: 1.14.1 3447 | typescript: 4.9.5 3448 | dev: true 3449 | 3450 | /tunnel-agent/0.4.3: 3451 | resolution: {integrity: sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==} 3452 | dev: false 3453 | 3454 | /turbo-darwin-64/1.9.8: 3455 | resolution: {integrity: sha512-PkTdBjPfgpj/Dob/6SjkzP0BBP80/KmFjLEocXVEECCLJE6tHKbWLRdvc79B0N6SufdYdZ1uvvoU3KPtBokSPw==} 3456 | cpu: [x64] 3457 | os: [darwin] 3458 | requiresBuild: true 3459 | dev: true 3460 | optional: true 3461 | 3462 | /turbo-darwin-arm64/1.9.8: 3463 | resolution: {integrity: sha512-sLwqOx3XV57QCEoJM9GnDDnnqidG8wf29ytxssBaWHBdeJTjupyrmzTUrX+tyKo3Q+CjWvbPLyqVqxT4g5NuXQ==} 3464 | cpu: [arm64] 3465 | os: [darwin] 3466 | requiresBuild: true 3467 | dev: true 3468 | optional: true 3469 | 3470 | /turbo-linux-64/1.9.8: 3471 | resolution: {integrity: sha512-AMg6VT6sW7aOD1uOs5suxglXfTYz9T0uVyKGKokDweGOYTWmuTMGU5afUT1tYRUwQ+kVPJI+83Atl5Ob0oBsgw==} 3472 | cpu: [x64] 3473 | os: [linux] 3474 | requiresBuild: true 3475 | dev: true 3476 | optional: true 3477 | 3478 | /turbo-linux-arm64/1.9.8: 3479 | resolution: {integrity: sha512-tLnxFv+OIklwTjiOZ8XMeEeRDAf150Ry4BCivNwgTVFAqQGEqkFP6KGBy56hb5RRF1frPQpoPGipJNVm7c8m1w==} 3480 | cpu: [arm64] 3481 | os: [linux] 3482 | requiresBuild: true 3483 | dev: true 3484 | optional: true 3485 | 3486 | /turbo-windows-64/1.9.8: 3487 | resolution: {integrity: sha512-r3pCjvXTMR7kq2E3iqwFlN1R7pFO/TOsuUjMhOSPP7HwuuUIinAckU4I9foM3q7ZCQd1XXScBUt3niDyHijAqQ==} 3488 | cpu: [x64] 3489 | os: [win32] 3490 | requiresBuild: true 3491 | dev: true 3492 | optional: true 3493 | 3494 | /turbo-windows-arm64/1.9.8: 3495 | resolution: {integrity: sha512-CWzRbX2TM5IfHBC6uWM659qUOEDC4h0nn16ocG8yIq1IF3uZMzKRBHgGOT5m1BHom+R08V0NcjTmPRoqpiI0dg==} 3496 | cpu: [arm64] 3497 | os: [win32] 3498 | requiresBuild: true 3499 | dev: true 3500 | optional: true 3501 | 3502 | /turbo/1.9.8: 3503 | resolution: {integrity: sha512-dTouGZBm4a2fE0OPafcTQERCp4i3ZOow0Pr0JlOyxKmzJy0JRwXypH013kbZoK6k1ET5tS/g9rwUXIM/AmWXXQ==} 3504 | hasBin: true 3505 | requiresBuild: true 3506 | optionalDependencies: 3507 | turbo-darwin-64: 1.9.8 3508 | turbo-darwin-arm64: 1.9.8 3509 | turbo-linux-64: 1.9.8 3510 | turbo-linux-arm64: 1.9.8 3511 | turbo-windows-64: 1.9.8 3512 | turbo-windows-arm64: 1.9.8 3513 | dev: true 3514 | 3515 | /type-check/0.4.0: 3516 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3517 | engines: {node: '>= 0.8.0'} 3518 | dependencies: 3519 | prelude-ls: 1.2.1 3520 | dev: true 3521 | 3522 | /type-fest/0.20.2: 3523 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3524 | engines: {node: '>=10'} 3525 | dev: true 3526 | 3527 | /type-is/1.6.18: 3528 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 3529 | engines: {node: '>= 0.6'} 3530 | dependencies: 3531 | media-typer: 0.3.0 3532 | mime-types: 2.1.35 3533 | dev: false 3534 | 3535 | /typed-array-length/1.0.4: 3536 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3537 | dependencies: 3538 | call-bind: 1.0.2 3539 | for-each: 0.3.3 3540 | is-typed-array: 1.1.10 3541 | dev: true 3542 | 3543 | /typescript/4.9.5: 3544 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 3545 | engines: {node: '>=4.2.0'} 3546 | hasBin: true 3547 | dev: true 3548 | 3549 | /unbox-primitive/1.0.2: 3550 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3551 | dependencies: 3552 | call-bind: 1.0.2 3553 | has-bigints: 1.0.2 3554 | has-symbols: 1.0.3 3555 | which-boxed-primitive: 1.0.2 3556 | dev: true 3557 | 3558 | /unified/8.4.2: 3559 | resolution: {integrity: sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==} 3560 | dependencies: 3561 | '@types/unist': 2.0.6 3562 | bail: 1.0.5 3563 | extend: 3.0.2 3564 | is-plain-obj: 2.1.0 3565 | trough: 1.0.5 3566 | vfile: 4.2.1 3567 | dev: false 3568 | 3569 | /unist-util-stringify-position/2.0.3: 3570 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 3571 | dependencies: 3572 | '@types/unist': 2.0.6 3573 | dev: false 3574 | 3575 | /universal-cookie/4.0.4: 3576 | resolution: {integrity: sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==} 3577 | dependencies: 3578 | '@types/cookie': 0.3.3 3579 | cookie: 0.4.2 3580 | dev: false 3581 | 3582 | /universalify/0.2.0: 3583 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 3584 | engines: {node: '>= 4.0.0'} 3585 | dev: false 3586 | 3587 | /unpipe/1.0.0: 3588 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 3589 | engines: {node: '>= 0.8'} 3590 | dev: false 3591 | 3592 | /update-browserslist-db/1.0.11_browserslist@4.21.5: 3593 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 3594 | hasBin: true 3595 | peerDependencies: 3596 | browserslist: '>= 4.21.0' 3597 | dependencies: 3598 | browserslist: 4.21.5 3599 | escalade: 3.1.1 3600 | picocolors: 1.0.0 3601 | dev: true 3602 | 3603 | /uri-js/4.4.1: 3604 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3605 | dependencies: 3606 | punycode: 2.3.0 3607 | dev: true 3608 | 3609 | /url-parse/1.5.10: 3610 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 3611 | dependencies: 3612 | querystringify: 2.2.0 3613 | requires-port: 1.0.0 3614 | dev: false 3615 | 3616 | /util-deprecate/1.0.2: 3617 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3618 | 3619 | /utils-merge/1.0.1: 3620 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 3621 | engines: {node: '>= 0.4.0'} 3622 | dev: false 3623 | 3624 | /vary/1.1.2: 3625 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 3626 | engines: {node: '>= 0.8'} 3627 | dev: false 3628 | 3629 | /vfile-message/2.0.4: 3630 | resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} 3631 | dependencies: 3632 | '@types/unist': 2.0.6 3633 | unist-util-stringify-position: 2.0.3 3634 | dev: false 3635 | 3636 | /vfile/4.2.1: 3637 | resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} 3638 | dependencies: 3639 | '@types/unist': 2.0.6 3640 | is-buffer: 2.0.5 3641 | unist-util-stringify-position: 2.0.3 3642 | vfile-message: 2.0.4 3643 | dev: false 3644 | 3645 | /webidl-conversions/3.0.1: 3646 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 3647 | dev: false 3648 | 3649 | /whacko/0.19.1: 3650 | resolution: {integrity: sha512-OnO3ZX6wIC21GASyIl6ZcVYhu+BaIcaGNtads+O9U/gFqQ4dkUrpauAb3WMSWFK+2qzDfxEXnOxBqQnS1/NrXQ==} 3651 | engines: {node: '>= 0.6'} 3652 | dependencies: 3653 | css-select: 1.2.0 3654 | domutils: 1.5.1 3655 | lodash: 3.10.1 3656 | parse5: 1.5.1 3657 | dev: false 3658 | 3659 | /whatwg-url/5.0.0: 3660 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 3661 | dependencies: 3662 | tr46: 0.0.3 3663 | webidl-conversions: 3.0.1 3664 | dev: false 3665 | 3666 | /which-boxed-primitive/1.0.2: 3667 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3668 | dependencies: 3669 | is-bigint: 1.0.4 3670 | is-boolean-object: 1.1.2 3671 | is-number-object: 1.0.7 3672 | is-string: 1.0.7 3673 | is-symbol: 1.0.4 3674 | dev: true 3675 | 3676 | /which-collection/1.0.1: 3677 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3678 | dependencies: 3679 | is-map: 2.0.2 3680 | is-set: 2.0.2 3681 | is-weakmap: 2.0.1 3682 | is-weakset: 2.0.2 3683 | dev: true 3684 | 3685 | /which-typed-array/1.1.9: 3686 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 3687 | engines: {node: '>= 0.4'} 3688 | dependencies: 3689 | available-typed-arrays: 1.0.5 3690 | call-bind: 1.0.2 3691 | for-each: 0.3.3 3692 | gopd: 1.0.1 3693 | has-tostringtag: 1.0.0 3694 | is-typed-array: 1.1.10 3695 | dev: true 3696 | 3697 | /which/2.0.2: 3698 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3699 | engines: {node: '>= 8'} 3700 | hasBin: true 3701 | dependencies: 3702 | isexe: 2.0.0 3703 | 3704 | /word-wrap/1.2.3: 3705 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3706 | engines: {node: '>=0.10.0'} 3707 | dev: true 3708 | 3709 | /wrappy/1.0.2: 3710 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3711 | dev: true 3712 | 3713 | /xtend/4.0.2: 3714 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 3715 | engines: {node: '>=0.4'} 3716 | dev: false 3717 | 3718 | /yallist/4.0.0: 3719 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3720 | dev: true 3721 | 3722 | /yaml/2.2.2: 3723 | resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} 3724 | engines: {node: '>= 14'} 3725 | dev: true 3726 | 3727 | /yocto-queue/0.1.0: 3728 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3729 | engines: {node: '>=10'} 3730 | dev: true 3731 | 3732 | /zod/3.21.4: 3733 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 3734 | dev: false 3735 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | // If you want to use other PostCSS plugins, see the following: 2 | // https://tailwindcss.com/docs/using-with-preprocessors 3 | module.exports = { 4 | plugins: { 5 | tailwindcss: {}, 6 | autoprefixer: {}, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pinecone-io/vercel-chatbot-template/b59a3dbf73c656bfc8bfa20c379e3acf84c8dd0e/public/favicon.ico -------------------------------------------------------------------------------- /seed/crawler.ts: -------------------------------------------------------------------------------- 1 | import cheerio from 'cheerio'; 2 | 3 | import { NodeHtmlMarkdown, NodeHtmlMarkdownOptions } from 'node-html-markdown' 4 | 5 | interface QueueItem { 6 | url: string; 7 | depth: number; 8 | } 9 | 10 | interface Page { 11 | url: string; 12 | content: string; 13 | } 14 | 15 | class Crawler { 16 | private queue: QueueItem[] = []; 17 | private seen: Set = new Set(); 18 | private maxDepth: number; 19 | private maxPages: number; 20 | public pages: Page[] = []; 21 | 22 | constructor(maxDepth: number = 2, maxPages: number = 1) { 23 | this.maxDepth = maxDepth; 24 | this.maxPages = maxPages; 25 | } 26 | 27 | async crawl(startUrl: string): Promise { 28 | this.queue.push({ url: startUrl, depth: 0 }); 29 | 30 | while (this.queue.length > 0 && this.pages.length < this.maxPages) { 31 | const { url, depth } = this.queue.shift() as QueueItem; 32 | console.log(url, depth) 33 | if (depth > this.maxDepth) continue; 34 | 35 | if (this.seen.has(url)) continue; 36 | 37 | this.seen.add(url); 38 | 39 | const html = await this.fetchPage(url); 40 | const text = NodeHtmlMarkdown.translate(html) 41 | // console.log("TEXT", text) 42 | this.pages.push({ url, content: text }); 43 | 44 | const newUrls = this.extractUrls(html, url); 45 | 46 | this.queue.push(...newUrls.map(newUrl => ({ url: newUrl, depth: depth + 1 }))); 47 | } 48 | return this.pages; 49 | } 50 | 51 | private async fetchPage(url: string): Promise { 52 | try { 53 | const response = await fetch(url); 54 | return await response.text(); 55 | } catch (error) { 56 | // @ts-ignore 57 | console.error(`Failed to fetch ${url}: ${error.message}`); 58 | return ''; 59 | } 60 | } 61 | 62 | private extractUrls(html: string, baseUrl: string): string[] { 63 | const $ = cheerio.load(html); 64 | const relativeUrls = $('a').map((i, link) => $(link).attr('href')).get() as string[]; 65 | return relativeUrls.map(relativeUrl => new URL(relativeUrl, baseUrl).href); 66 | } 67 | } 68 | 69 | export { Crawler }; 70 | export type { Page }; 71 | -------------------------------------------------------------------------------- /seed/seed.ts: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from "next"; 2 | import { PineconeClient, Vector } from "@pinecone-database/pinecone"; 3 | import { Crawler, Page } from './crawler' 4 | 5 | import { summarizeLongDocument } from "./summarizer"; 6 | import { RecursiveCharacterTextSplitter, Document } from "../utils/TextSplitter"; 7 | import { OpenAIEmbedding } from "../utils/OpenAIEmbedding"; 8 | import { chunkedUpsert, createIndexIfNotExists } from "../pages/api/pinecone"; 9 | 10 | 11 | 12 | let pinecone: PineconeClient | null = null 13 | 14 | const initPineconeClient = async () => { 15 | pinecone = new PineconeClient(); 16 | console.log("init pinecone") 17 | await pinecone.init({ 18 | environment: process.env.PINECONE_ENVIRONMENT!, 19 | apiKey: process.env.PINECONE_API_KEY!, 20 | }); 21 | } 22 | 23 | 24 | // The TextEncoder instance enc is created and its encode() method is called on the input string. 25 | // The resulting Uint8Array is then sliced, and the TextDecoder instance decodes the sliced array in a single line of code. 26 | const truncateStringByBytes = (str: string, bytes: number) => { 27 | const enc = new TextEncoder(); 28 | return new TextDecoder("utf-8").decode(enc.encode(str).slice(0, bytes)); 29 | }; 30 | 31 | export default async function seed(url: string, limit: number, indexName: string, summarize: boolean) { 32 | 33 | const crawlLimit = limit || 100; 34 | const pineconeIndexName = indexName as string 35 | const shouldSummarize = summarize === true 36 | 37 | if (!pinecone) { 38 | await initPineconeClient(); 39 | } 40 | 41 | await createIndexIfNotExists(pinecone!, pineconeIndexName, 1536) 42 | 43 | const crawler = new Crawler(1, crawlLimit) 44 | const pages = await crawler.crawl(url) as Page[] 45 | 46 | const documents = await Promise.all(pages.map(async row => { 47 | 48 | const splitter = new RecursiveCharacterTextSplitter({ 49 | chunkSize: 256, 50 | chunkOverlap: 10 51 | }) 52 | const pageContent = shouldSummarize ? await summarizeLongDocument({ document: row.content }) : row.content 53 | 54 | const docs = await splitter.splitDocuments([ 55 | new Document({ pageContent, metadata: { url: row.url, text: truncateStringByBytes(pageContent, 36000) } }), 56 | ]); 57 | 58 | return docs 59 | })) 60 | 61 | const index = pinecone && pinecone.Index(pineconeIndexName); 62 | 63 | 64 | let counter = 0 65 | 66 | //Embed the documents 67 | const getEmbedding = async (doc: Document) => { 68 | const embedding = await OpenAIEmbedding(doc.pageContent) 69 | counter = counter + 1 70 | return { 71 | id: crypto.randomUUID(), 72 | values: embedding, 73 | metadata: { 74 | chunk: doc.pageContent, 75 | text: doc.metadata.text as string, 76 | url: doc.metadata.url as string, 77 | } 78 | } as Vector 79 | } 80 | 81 | console.log("done embedding"); 82 | 83 | let vectors = [] as Vector[] 84 | 85 | try { 86 | vectors = await Promise.all(documents.flat().map((doc) => getEmbedding(doc))) as unknown as Vector[] 87 | try { 88 | await chunkedUpsert(index!, vectors, 'documents', 10) 89 | console.log("done upserting") 90 | } catch (e) { 91 | console.log(e) 92 | console.error({ message: `Error ${JSON.stringify(e)}` }) 93 | } 94 | } catch (e) { 95 | console.log(e) 96 | } 97 | } -------------------------------------------------------------------------------- /seed/summarizer.ts: -------------------------------------------------------------------------------- 1 | import { OpenAICompletion } from "../utils/OpenAICompletion"; 2 | 3 | 4 | const chunkSubstr = (str: string, size: number) => { 5 | const numChunks = Math.ceil(str.length / size) 6 | const chunks = new Array(numChunks) 7 | 8 | for (let i = 0, o = 0; i < numChunks; ++i, o += size) { 9 | chunks[i] = str.substr(o, size) 10 | } 11 | 12 | return chunks 13 | } 14 | 15 | const summarize = async ({ document, inquiry, onSummaryDone }: { document: string, inquiry?: string, onSummaryDone?: Function }) => { 16 | console.log("summarizing ", document.length) 17 | 18 | const payload = `Summarize the following document so that it satisfies on the inquiry below: 19 | INQUIRY: ${inquiry} 20 | DOCUMENT: ${document} 21 | ` 22 | try { 23 | const result = await OpenAICompletion(payload) 24 | onSummaryDone && onSummaryDone(result.text) 25 | return result 26 | } catch (e) { 27 | console.log(e) 28 | } 29 | } 30 | 31 | const summarizeLongDocument = async ({ document, inquiry, onSummaryDone }: { document: string, inquiry?: string, onSummaryDone?: Function }): Promise => { 32 | // Chunk document into 4000 character chunks 33 | 34 | try { 35 | if ((document.length) > 4000) { 36 | console.log("document is long and has to be shortened", document.length) 37 | const chunks = chunkSubstr(document, 4000) 38 | let summarizedChunks: string[] = [] 39 | summarizedChunks = await Promise.all( 40 | chunks.map(async (chunk) => { 41 | let result 42 | if (inquiry) { 43 | result = await summarize({ document: chunk, inquiry, onSummaryDone }) 44 | } else { 45 | result = await summarize({ document: chunk, onSummaryDone }) 46 | } 47 | return result 48 | }) 49 | ) 50 | 51 | const result = summarizedChunks.join("\n"); 52 | console.log(result.length) 53 | 54 | if (result.length > 4000) { 55 | console.log("document is STILL long and has to be shortened further") 56 | return await summarizeLongDocument({ document: result, inquiry, onSummaryDone }) 57 | } else { 58 | console.log("done") 59 | return result 60 | } 61 | 62 | } else { 63 | return document 64 | } 65 | } catch (e) { 66 | throw new Error(e as string) 67 | } 68 | } 69 | 70 | export { summarizeLongDocument } -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require('@vercel/examples-ui/tailwind')], 3 | content: [ 4 | './pages/**/*.{js,ts,jsx,tsx}', 5 | './components/**/*.{js,ts,jsx,tsx}', 6 | './node_modules/@vercel/examples-ui/**/*.js', 7 | ], 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true 17 | }, 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "pipeline": { 4 | "build": { 5 | "outputs": [".next/**", "!.next/cache/**"] 6 | }, 7 | "lint": {} 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /utils/OpenAICompletion.ts: -------------------------------------------------------------------------------- 1 | export type ChatGPTAgent = 'user' | 'system' | 'assistant' 2 | 3 | export interface ChatGPTMessage { 4 | role: ChatGPTAgent 5 | content: string 6 | } 7 | 8 | export interface OpenAIPayload { 9 | model: string 10 | messages: ChatGPTMessage[] 11 | temperature: number 12 | top_p: number 13 | frequency_penalty: number 14 | presence_penalty: number 15 | max_tokens: number 16 | stream: boolean 17 | stop?: string[] 18 | user?: string 19 | n: number 20 | } 21 | 22 | 23 | 24 | export const OpenAICompletion = async (text: string) => { 25 | const payload: OpenAIPayload = { 26 | model: 'gpt-3.5-turbo', 27 | messages: [{ 28 | role: 'system', 29 | content: text 30 | }], 31 | temperature: process.env.AI_TEMP ? parseFloat(process.env.AI_TEMP) : 0.7, 32 | max_tokens: process.env.AI_MAX_TOKENS 33 | ? parseInt(process.env.AI_MAX_TOKENS) 34 | : 100, 35 | top_p: 1, 36 | frequency_penalty: 0, 37 | presence_penalty: 0, 38 | stream: true, 39 | n: 1, 40 | } 41 | 42 | const requestHeaders: Record = { 43 | 'Content-Type': 'application/json', 44 | Authorization: `Bearer ${process.env.OPENAI_API_KEY ?? ''}`, 45 | } 46 | 47 | if (process.env.OPENAI_API_ORG) { 48 | requestHeaders['OpenAI-Organization'] = process.env.OPENAI_API_ORG 49 | } 50 | 51 | const res = await fetch('https://api.openai.com/v1/chat/completions', { 52 | headers: requestHeaders, 53 | method: 'POST', 54 | body: JSON.stringify(payload), 55 | }) 56 | 57 | return res.json() 58 | } -------------------------------------------------------------------------------- /utils/OpenAIEmbedding.ts: -------------------------------------------------------------------------------- 1 | export async function OpenAIEmbedding(input: string) { 2 | try { 3 | const response = await fetch("https://api.openai.com/v1/embeddings", { 4 | method: "POST", 5 | headers: { 6 | "Authorization": `Bearer ${process.env.OPENAI_API_KEY}`, 7 | "Content-Type": "application/json", 8 | }, 9 | body: JSON.stringify({ 10 | input, 11 | model: "text-embedding-ada-002", 12 | }), 13 | }); 14 | const result = await response.json(); 15 | return result.data[0].embedding as number[] 16 | 17 | } catch (e) { 18 | console.log("Error calling OpenAI embedding API: ", e); 19 | throw new Error(`Error calling OpenAI embedding API: ${e}`); 20 | } 21 | } -------------------------------------------------------------------------------- /utils/OpenAIStream.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createParser, 3 | ParsedEvent, 4 | ReconnectInterval, 5 | } from 'eventsource-parser' 6 | 7 | export type ChatGPTAgent = 'user' | 'system' | 'assistant' 8 | 9 | export interface ChatGPTMessage { 10 | role: ChatGPTAgent 11 | content: string 12 | } 13 | 14 | export interface OpenAIStreamPayload { 15 | model: string 16 | messages: ChatGPTMessage[] 17 | temperature: number 18 | top_p: number 19 | frequency_penalty: number 20 | presence_penalty: number 21 | max_tokens: number 22 | stream: boolean 23 | stop?: string[] 24 | user?: string 25 | n: number 26 | } 27 | 28 | export async function OpenAIStream(payload: OpenAIStreamPayload) { 29 | const encoder = new TextEncoder() 30 | const decoder = new TextDecoder() 31 | 32 | let counter = 0 33 | 34 | const requestHeaders: Record = { 35 | 'Content-Type': 'application/json', 36 | Authorization: `Bearer ${process.env.OPENAI_API_KEY ?? ''}`, 37 | } 38 | 39 | if (process.env.OPENAI_API_ORG) { 40 | requestHeaders['OpenAI-Organization'] = process.env.OPENAI_API_ORG 41 | } 42 | 43 | const res = await fetch('https://api.openai.com/v1/chat/completions', { 44 | headers: requestHeaders, 45 | method: 'POST', 46 | body: JSON.stringify(payload), 47 | }) 48 | 49 | const stream = new ReadableStream({ 50 | async start(controller) { 51 | // callback 52 | function onParse(event: ParsedEvent | ReconnectInterval) { 53 | if (event.type === 'event') { 54 | const data = event.data 55 | // https://beta.openai.com/docs/api-reference/completions/create#completions/create-stream 56 | if (data === '[DONE]') { 57 | console.log('DONE') 58 | controller.close() 59 | return 60 | } 61 | try { 62 | const json = JSON.parse(data) 63 | const text = json.choices[0].delta?.content || '' 64 | if (counter < 2 && (text.match(/\n/) || []).length) { 65 | // this is a prefix character (i.e., "\n\n"), do nothing 66 | return 67 | } 68 | const queue = encoder.encode(text) 69 | controller.enqueue(queue) 70 | counter++ 71 | } catch (e) { 72 | // maybe parse error 73 | controller.error(e) 74 | } 75 | } 76 | } 77 | 78 | // stream response (SSE) from OpenAI may be fragmented into multiple chunks 79 | // this ensures we properly read chunks and invoke an event for each SSE event stream 80 | const parser = createParser(onParse) 81 | for await (const chunk of res.body as any) { 82 | parser.feed(decoder.decode(chunk)) 83 | } 84 | }, 85 | }) 86 | 87 | return stream 88 | } 89 | 90 | -------------------------------------------------------------------------------- /utils/TextSplitter.ts: -------------------------------------------------------------------------------- 1 | type Metadata = Record; 2 | 3 | interface DocumentInput { 4 | pageContent: string; 5 | metadata?: Metadata; 6 | } 7 | 8 | export class Document implements DocumentInput { 9 | pageContent: string; 10 | metadata: Metadata; 11 | 12 | constructor(fields: DocumentInput) { 13 | this.pageContent = fields.pageContent || ""; 14 | this.metadata = fields.metadata || {}; 15 | } 16 | } 17 | 18 | interface TextSplitterParams { 19 | chunkSize: number; 20 | chunkOverlap: number; 21 | } 22 | 23 | export abstract class TextSplitter implements TextSplitterParams { 24 | chunkSize = 1000; 25 | 26 | chunkOverlap = 200; 27 | 28 | constructor(fields?: Partial) { 29 | this.chunkSize = fields?.chunkSize ?? this.chunkSize; 30 | this.chunkOverlap = fields?.chunkOverlap ?? this.chunkOverlap; 31 | if (this.chunkOverlap >= this.chunkSize) { 32 | throw new Error("Cannot have chunkOverlap >= chunkSize"); 33 | } 34 | } 35 | 36 | abstract splitText(text: string): Promise; 37 | 38 | private getNewLinesCount(text: string): number { 39 | return (text.match(/\n/g) || []).length; 40 | } 41 | 42 | private getLoc(metadata: Metadata, from: number, to: number): Metadata { 43 | const loc = metadata.loc && typeof metadata.loc === "object" 44 | ? { ...metadata.loc } 45 | : {}; 46 | 47 | return { 48 | ...metadata, 49 | loc: { 50 | ...loc, 51 | lines: { from, to } 52 | } 53 | }; 54 | } 55 | 56 | private getIntermediateNewLines(text: string, prevChunk: string, chunk: string): number { 57 | if (!prevChunk) return 0; 58 | 59 | const indexChunk = text.indexOf(chunk); 60 | const indexEndPrevChunk = text.indexOf(prevChunk) + prevChunk.length; 61 | const removedNewlinesFromSplittingText = text.slice(indexEndPrevChunk, indexChunk); 62 | 63 | return this.getNewLinesCount(removedNewlinesFromSplittingText); 64 | } 65 | 66 | private async createDocumentsFromText(text: string, metadata: Metadata): Promise { 67 | let lineCounterIndex = 1; 68 | let prevChunk = null; 69 | const documents = []; 70 | 71 | for (const chunk of await this.splitText(text)) { 72 | const intermediateNewLines = this.getIntermediateNewLines(text, prevChunk!, chunk); 73 | lineCounterIndex += intermediateNewLines; 74 | 75 | const newLinesCount = this.getNewLinesCount(chunk); 76 | const updatedMetadata = this.getLoc(metadata, lineCounterIndex, lineCounterIndex + newLinesCount); 77 | 78 | documents.push(new Document({ pageContent: chunk, metadata: updatedMetadata })); 79 | 80 | lineCounterIndex += newLinesCount; 81 | prevChunk = chunk; 82 | } 83 | 84 | return documents; 85 | } 86 | 87 | async createDocuments(texts: string[], metadatas: Metadata[] = []): Promise { 88 | metadatas = metadatas.length > 0 ? metadatas : new Array(texts.length).fill({}); 89 | const documentPromises = texts.map((text, i) => this.createDocumentsFromText(text, metadatas[i])); 90 | 91 | return (await Promise.all(documentPromises)).flat(); 92 | } 93 | 94 | async splitDocuments(documents: Document[]): Promise { 95 | const selectedDocuments = documents.filter( 96 | (doc) => doc.pageContent !== undefined 97 | ); 98 | const texts = selectedDocuments.map((doc) => doc.pageContent); 99 | const metadatas = selectedDocuments.map((doc) => doc.metadata); 100 | return this.createDocuments(texts, metadatas); 101 | } 102 | 103 | private joinDocs(docs: string[], separator: string): string | null { 104 | const text = docs.join(separator).trim(); 105 | return text === "" ? null : text; 106 | } 107 | 108 | private warnForExcessChunkSize(total: number): void { 109 | if (total > this.chunkSize) { 110 | console.warn( 111 | `Created a chunk of size ${total}, which is longer than the specified ${this.chunkSize}` 112 | ); 113 | } 114 | } 115 | 116 | private createDocAndAdjustCurrentDoc(currentDoc: string[], separator: string, total: number, len: number): string { 117 | const doc = this.joinDocs(currentDoc, separator); 118 | while (total > this.chunkOverlap || (total + len > this.chunkSize && total > 0)) { 119 | total -= currentDoc[0].length; 120 | currentDoc.shift(); 121 | } 122 | return doc!; 123 | } 124 | 125 | mergeSplits(splits: string[], separator: string): string[] { 126 | const docs: string[] = []; 127 | let currentDoc: string[] = []; 128 | let total = 0; 129 | 130 | for (const d of splits) { 131 | const len = d.length; 132 | if (total + len >= this.chunkSize) { 133 | this.warnForExcessChunkSize(total); 134 | 135 | if (currentDoc.length > 0) { 136 | const doc = this.createDocAndAdjustCurrentDoc(currentDoc, separator, total, len); 137 | if (doc !== null) { 138 | docs.push(doc); 139 | } 140 | } 141 | } 142 | 143 | currentDoc.push(d); 144 | total += len; 145 | } 146 | 147 | const doc = this.joinDocs(currentDoc, separator); 148 | if (doc !== null) { 149 | docs.push(doc); 150 | } 151 | 152 | return docs; 153 | } 154 | 155 | } 156 | 157 | interface CharacterTextSplitterParams extends TextSplitterParams { 158 | separator: string; 159 | } 160 | 161 | interface RecursiveCharacterTextSplitterParams extends TextSplitterParams { 162 | separators: string[]; 163 | } 164 | 165 | export class RecursiveCharacterTextSplitter extends TextSplitter implements RecursiveCharacterTextSplitterParams { 166 | separators: string[] = ["\n\n", "\n", " ", ""]; 167 | 168 | constructor(fields?: Partial) { 169 | super(fields); 170 | this.separators = fields?.separators ?? this.separators; 171 | } 172 | 173 | async splitText(text: string): Promise { 174 | const finalChunks: string[] = []; 175 | 176 | let separator: string = this.separators[this.separators.length - 1]; 177 | for (const s of this.separators) { 178 | if (s === "") { 179 | separator = s; 180 | break; 181 | } 182 | if (text.includes(s)) { 183 | separator = s; 184 | break; 185 | } 186 | } 187 | 188 | let splits: string[]; 189 | if (separator) { 190 | splits = text.split(separator); 191 | } else { 192 | splits = text.split(""); 193 | } 194 | 195 | let goodSplits: string[] = []; 196 | for (const s of splits) { 197 | if (s.length < this.chunkSize) { 198 | goodSplits.push(s); 199 | } else { 200 | if (goodSplits.length) { 201 | const mergedText = this.mergeSplits(goodSplits, separator); 202 | finalChunks.push(...mergedText); 203 | goodSplits = []; 204 | } 205 | const otherInfo = await this.splitText(s); 206 | finalChunks.push(...otherInfo); 207 | } 208 | } 209 | if (goodSplits.length) { 210 | const mergedText = this.mergeSplits(goodSplits, separator); 211 | finalChunks.push(...mergedText); 212 | } 213 | return finalChunks; 214 | } 215 | 216 | mergeSplits(splits: string[], separator: string): string[] { 217 | const mergedText: string[] = []; 218 | let currentChunk = ""; 219 | for (const s of splits) { 220 | if (currentChunk.length + s.length < this.chunkSize) { 221 | currentChunk += s + separator; 222 | } else { 223 | mergedText.push(currentChunk.trim()); 224 | currentChunk = s + separator; 225 | } 226 | } 227 | if (currentChunk) { 228 | mergedText.push(currentChunk.trim()); 229 | } 230 | return mergedText; 231 | } 232 | } 233 | 234 | 235 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildCommand": "pnpm turbo build", 3 | "ignoreCommand": "pnpm dlx turbo-ignore" 4 | } 5 | --------------------------------------------------------------------------------