From 5666046e913d47792d783245899607f7dbcfcdca Mon Sep 17 00:00:00 2001 From: Shubhamai Date: Tue, 23 Apr 2024 14:19:46 +0530 Subject: [PATCH] smol refactor + web init --- Cargo.lock | 79 + Cargo.toml | 4 + src/ast.rs | 35 +- src/compiler.rs | 13 +- src/interner.rs | 11 - src/lib.rs | 35 + src/main.rs | 71 +- src/scanner.rs | 163 +- web/.eslintrc.json | 3 + web/README.md | 36 + web/app/favicon.ico | Bin 0 -> 25931 bytes web/app/globals.css | 76 + web/app/layout.tsx | 22 + web/app/page.tsx | 113 + web/bun.lockb | Bin 0 -> 197725 bytes web/components.json | 17 + web/lib/utils.ts | 6 + web/next.config.mjs | 4 + web/package-lock.json | 4827 ++++++++++++++++++++++++++++++++++++++++ web/package.json | 32 + web/postcss.config.mjs | 8 + web/public/next.svg | 1 + web/public/vercel.svg | 1 + web/tailwind.config.ts | 80 + web/tsconfig.json | 26 + 25 files changed, 5500 insertions(+), 163 deletions(-) create mode 100644 src/lib.rs create mode 100644 web/.eslintrc.json create mode 100644 web/README.md create mode 100644 web/app/favicon.ico create mode 100644 web/app/globals.css create mode 100644 web/app/layout.tsx create mode 100644 web/app/page.tsx create mode 100644 web/bun.lockb create mode 100644 web/components.json create mode 100644 web/lib/utils.ts create mode 100644 web/next.config.mjs create mode 100644 web/package-lock.json create mode 100644 web/package.json create mode 100644 web/postcss.config.mjs create mode 100644 web/public/next.svg create mode 100644 web/public/vercel.svg create mode 100644 web/tailwind.config.ts create mode 100644 web/tsconfig.json diff --git a/Cargo.lock b/Cargo.lock index c7b66df..b547d54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,7 @@ version = "0.1.0" dependencies = [ "clap", "logos", + "wasm-bindgen", ] [[package]] @@ -64,6 +65,18 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "clap" version = "4.5.4" @@ -128,6 +141,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + [[package]] name = "logos" version = "0.14.0" @@ -161,6 +180,12 @@ dependencies = [ "logos-codegen", ] +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + [[package]] name = "proc-macro2" version = "1.0.79" @@ -214,6 +239,60 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + [[package]] name = "windows-sys" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index d977086..8caf690 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,7 @@ description = "A programming language with built-in autograd" [dependencies] clap = { version = "4.5.4", features = ["derive"] } logos = "0.14.0" +wasm-bindgen = "0.2" + +[lib] +crate-type = ["cdylib"] \ No newline at end of file diff --git a/src/ast.rs b/src/ast.rs index d18a6a4..f69ce72 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -119,7 +119,7 @@ pub enum UnaryOp { pub enum PostfixOp { Index, Call, - STAR_STAR, // exponentiation + StarStar, // exponentiation } #[derive(Debug, Clone, Copy, PartialEq)] @@ -149,7 +149,7 @@ impl fmt::Display for Ops { Ops::PostfixOp(PostfixOp::Index) => write!(f, "["), Ops::PostfixOp(PostfixOp::Call) => write!(f, "."), - Ops::PostfixOp(PostfixOp::STAR_STAR) => write!(f, "**"), + Ops::PostfixOp(PostfixOp::StarStar) => write!(f, "**"), // Ops::PostfixOp(PostfixOp::Args) => write!(f, ","), } } @@ -235,7 +235,7 @@ fn expr_bp(lexer: &mut Lexer, min_bp: u8) -> ASTNode { TokenType::GREATER_EQUAL => Ops::BinaryOp(BinaryOp::Ge), TokenType::DOT => Ops::PostfixOp(PostfixOp::Call), - TokenType::STAR_STAR => Ops::PostfixOp(PostfixOp::STAR_STAR), + TokenType::STAR_STAR => Ops::PostfixOp(PostfixOp::StarStar), TokenType::BANG => Ops::UnaryOp(UnaryOp::Not), @@ -268,7 +268,7 @@ fn expr_bp(lexer: &mut Lexer, min_bp: u8) -> ASTNode { TokenType::DOT => Ops::PostfixOp(PostfixOp::Call), TokenType::LEFT_BRACKET => Ops::PostfixOp(PostfixOp::Index), - TokenType::STAR_STAR => Ops::PostfixOp(PostfixOp::STAR_STAR), + TokenType::STAR_STAR => Ops::PostfixOp(PostfixOp::StarStar), TokenType::BANG => Ops::UnaryOp(UnaryOp::Negate), @@ -307,30 +307,9 @@ fn expr_bp(lexer: &mut Lexer, min_bp: u8) -> ASTNode { } } - // let mut args = HashMap::new(); - // while lexer.peek().token_type != TokenType::RIGHT_PAREN { - - // // let key = lexer.next().lexeme; - // // assert_eq!(lexer.next().token_type, TokenType::EQUAL); - // // let value = expr_bp(lexer, 0); - // // args.insert(key, value); - - // if lexer.peek().token_type == TokenType::COMMA { - // lexer.next(); - // } - // } - lexer.next(); - ASTNode::Op( - op, - // vec![ - // lhs, - // S::Identifier(callee_token.lexeme), - // S::Op(Ops::PostfixOp(PostfixOp::Args), args), - // ], - vec![lhs, ASTNode::Callee(callee_token.lexeme, args)], - ) - } else if op == Ops::PostfixOp(PostfixOp::STAR_STAR) { + ASTNode::Op(op, vec![lhs, ASTNode::Callee(callee_token.lexeme, args)]) + } else if op == Ops::PostfixOp(PostfixOp::StarStar) { let rhs = expr_bp(lexer, 0); ASTNode::Op(op, vec![lhs, rhs]) } else { @@ -379,7 +358,7 @@ fn postfix_binding_power(op: Ops) -> Option<(u8, ())> { // '[' => (11, ()), Ops::PostfixOp(PostfixOp::Index) => (13, ()), Ops::PostfixOp(PostfixOp::Call) => (14, ()), - Ops::PostfixOp(PostfixOp::STAR_STAR) => (16, ()), + Ops::PostfixOp(PostfixOp::StarStar) => (16, ()), _ => return None, }; Some(res) diff --git a/src/compiler.rs b/src/compiler.rs index b365fd3..ca40c79 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -74,6 +74,10 @@ impl Compiler { Ops::BinaryOp(BinaryOp::Mul) => { self.chunk.write(VectorType::Code(OpCode::OpMultiply)) } + // @ - dot product - TODO: need to implement + Ops::BinaryOp(BinaryOp::At) => { + self.chunk.write(VectorType::Code(OpCode::OpMultiply)) + } Ops::BinaryOp(BinaryOp::Div) => { self.chunk.write(VectorType::Code(OpCode::OpDivide)) } @@ -103,7 +107,7 @@ impl Compiler { self.chunk.write(VectorType::Code(OpCode::OpNegate)) } - Ops::PostfixOp(PostfixOp::STAR_STAR) => { + Ops::PostfixOp(PostfixOp::StarStar) => { self.chunk.write(VectorType::Code(OpCode::OpPower)) } Ops::PostfixOp(PostfixOp::Call) => { @@ -113,7 +117,7 @@ impl Compiler { .write(VectorType::Constant(self.chunk.constants.len() - 1)); // TODO: need for testing for this - a.relu(c.relu()), a.relu().relu() } - x => println!("Invalid operator {:?}", x), + Ops::UnaryOp(UnaryOp::Not) | Ops::PostfixOp(PostfixOp::Index) => todo!(), } } ASTNode::Print(expr) => { @@ -147,13 +151,15 @@ impl Compiler { self.chunk.write(VectorType::Code(OpCode::OpSetGlobal)); self.chunk.write(VectorType::Constant(global)); } - ASTNode::Callee(iden, args) => { + ASTNode::Callee(iden, _) => { println!("Callee"); let global = self .chunk .add_constant(ValueType::Identifier(self.interner.intern_string(iden))); self.chunk.write(VectorType::Constant(global)); + // TODO: need to implement args + // for arg in args { // self.visit(arg.clone()); // } @@ -161,7 +167,6 @@ impl Compiler { // self.chunk.write(VectorType::Code(OpCode::OpCall)); // self.chunk.write(VectorType::Constant(args.len())); } - _ => println!("Invalid ASTNode"), // TODO: handle this error } } } diff --git a/src/interner.rs b/src/interner.rs index 2988d23..98841ba 100644 --- a/src/interner.rs +++ b/src/interner.rs @@ -11,17 +11,6 @@ pub struct Interner { } impl Interner { - pub fn intern(&mut self, name: &str) -> StringObjIdx { - if let Some(&idx) = self.map.get(name) { - return idx; - } - let idx = self.map.len() as StringObjIdx; - self.map.insert(name.to_owned(), idx); - self.vec.push(name.to_owned()); - - idx - } - pub fn intern_string(&mut self, name: String) -> StringObjIdx { if let Some(&idx ) = self.map.get(&name) { return idx; diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..fc10910 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,35 @@ +mod ast; +mod chunk; +mod compiler; +mod debug; +mod interner; +mod scanner; +mod tensor; +mod value; +mod vm; + +use crate::{ast::Parser, scanner::Lexer}; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn run_source(src: &str) -> String { + let mut lexer = Lexer::new(src.to_string()); + + let out = Parser::new(&mut lexer).parse(); + for stmt in out.iter() { + println!("{:?}", stmt); + } + println!("-------------"); + + let mut compiler = compiler::Compiler::new(); + let (bytecode, interner) = compiler.compile(out); + println!("{:?}", bytecode); + + let debug = debug::Debug::new("test", bytecode.clone()); + debug.disassemble(); + + let mut vm = vm::VM::init(bytecode, interner); + let result = vm.run(); + + format!("{:?}", result) +} diff --git a/src/main.rs b/src/main.rs index 079fbbe..fdc302b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ mod vm; use clap::Parser as ClapParser; use std::io::Write; use vm::InterpretResult; +use wasm_bindgen::prelude::*; use crate::{ast::Parser, scanner::Lexer}; @@ -28,8 +29,9 @@ fn main() { // Check if args.script is provided if args.script.is_empty() { // run as a repl + // run_repl(); - run_repl(); + panic!("REPL is not supported yet."); } else { // read file @@ -42,48 +44,49 @@ fn main() { } } -fn run_repl() { - loop { - // print prompt - print!("> "); - let _ = std::io::stdout().flush(); - - // read input - let mut input = String::new(); - input = match std::io::stdin().read_line(&mut input) { - Ok(_) => input, - Err(e) => panic!("Error reading input: {}", e), - }; +// fn run_repl() { +// loop { +// // print prompt +// print!("> "); +// let _ = std::io::stdout().flush(); - // exit if input is "exit" - if input.trim() == "exit" || input.trim() == "" { - break; - } +// // read input +// let mut input = String::new(); +// input = match std::io::stdin().read_line(&mut input) { +// Ok(_) => input, +// Err(e) => panic!("Error reading input: {}", e), +// }; - // ======================== REPL ======================== - let mut lexer = Lexer::new(input.to_string()); +// // exit if input is "exit" +// if input.trim() == "exit" || input.trim() == "" { +// break; +// } - let out = Parser::new(&mut lexer).parse(); - for stmt in out.iter() { - println!("{};", stmt); - } +// // ======================== REPL ======================== +// let mut lexer = Lexer::new(input.to_string()); - let mut compiler = compiler::Compiler::new(); - let (bytecode, interner) = compiler.compile(out); +// let out = Parser::new(&mut lexer).parse(); +// for stmt in out.iter() { +// println!("{};", stmt); +// } - println!("{:?}", bytecode); +// let mut compiler = compiler::Compiler::new(); +// let (bytecode, interner) = compiler.compile(out); - let debug = debug::Debug::new("test", bytecode.clone()); - debug.disassemble(); +// println!("{:?}", bytecode); - let mut vm = vm::VM::init(bytecode, interner); - let result = vm.run(); - // println!("{:?}", result); +// let debug = debug::Debug::new("test", bytecode.clone()); +// debug.disassemble(); - // ======================== REPL ======================== - } -} +// let mut vm = vm::VM::init(bytecode, interner); +// let result = vm.run(); +// // println!("{:?}", result); + +// // ======================== REPL ======================== +// } +// } +#[wasm_bindgen] pub fn run_source(src: &str) -> InterpretResult { let mut lexer = Lexer::new(src.to_string()); diff --git a/src/scanner.rs b/src/scanner.rs index c17adda..08dac6e 100644 --- a/src/scanner.rs +++ b/src/scanner.rs @@ -97,34 +97,26 @@ pub enum TokenType { #[token("/=")] SLASH_EQUAL, // /= - // Literals. #[regex(r#"[a-zA-Z_][a-zA-Z0-9_]*"#)] Identifier, - // #[regex(r#"[a-zA-Z_][a-zA-Z0-9_]*"#, |lex| lex.slice().to_owned())] - // Identifier(String), + #[regex(r"(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?", |lex| lex.slice().parse::().unwrap())] Number(f64), // seperate for int and float + // #[regex(r"-?(?:0|[1-9]\d*)", |lex| lex.slice().parse::().unwrap())] // IntNumber(i64), // #[regex(r"-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?", |lex| lex.slice().parse::().unwrap(), priority = 3)] // FloatNumber(f64), #[regex(r#""([^"\\]|\\["\\bnfrt]|u[a-fA-F0-9]{4})*""#)] - // , |lex| lex.slice().to_owned() String, // boolean ion single Boolean(bool) #[regex(r"true|false", |lex| lex.slice() == "true")] Boolean(bool), - // #[token("true")] - // True, - - // #[token("false")] - // False, - // Keywords. #[token("and")] AND, @@ -241,83 +233,82 @@ impl Lexer { tokens.reverse(); tokens.truncate(n); // tokens.reverse(); - + tokens.iter().map(|t| t.token_type).collect() } } -// #[cfg(test)] -// mod tests { -// use super::*; - -// #[test] -// fn test_let() { -// let mut lexer = TokenType::lexer("let x = 10;"); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// } - -// #[test] -// fn test_string() { -// let mut lexer = TokenType::lexer("let a = \"Hello, let b World!\";"); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::String))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// } - -// #[test] -// fn test_comment() { -// let mut lexer = TokenType::lexer("let a = 10; // This is a comment"); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::COMMENT))); -// } - -// #[test] -// fn test_addequal() { -// let mut lexer = TokenType::lexer("let a = 4; a += 6; print(a == 10)"); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::PLUS_EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::PRINT))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LEFT_PAREN))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL_EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::RIGHT_PAREN))); -// } - -// #[test] -// fn test_boolean() { -// let mut lexer = TokenType::lexer("let true_false_a = 4; let a = true; let b = false;"); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Number))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::True))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::False))); -// assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); -// } -// } +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_let() { + let mut lexer = TokenType::lexer("let x = 10;"); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(10.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + } + + #[test] + fn test_string() { + let mut lexer = TokenType::lexer("let a = \"Hello, let b World!\";"); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::String))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + } + + #[test] + fn test_comment() { + let mut lexer = TokenType::lexer("let a = 10; // This is a comment"); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(10.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + } + + #[test] + fn test_addequal() { + let mut lexer = TokenType::lexer("let a = 4; a += 6; print(a == 10)"); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(4.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::PLUS_EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(6.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + assert_eq!(lexer.next(), Some(Ok(TokenType::PRINT))); + assert_eq!(lexer.next(), Some(Ok(TokenType::LEFT_PAREN))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL_EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(10.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::RIGHT_PAREN))); + } + + #[test] + fn test_boolean() { + let mut lexer = TokenType::lexer("let true_false_a = 4; let a = true; let b = false;"); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Number(4.)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Boolean(true)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + assert_eq!(lexer.next(), Some(Ok(TokenType::LET))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Identifier))); + assert_eq!(lexer.next(), Some(Ok(TokenType::EQUAL))); + assert_eq!(lexer.next(), Some(Ok(TokenType::Boolean(false)))); + assert_eq!(lexer.next(), Some(Ok(TokenType::SEMICOLON))); + } +} diff --git a/web/.eslintrc.json b/web/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/web/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..c403366 --- /dev/null +++ b/web/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/web/app/favicon.ico b/web/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/web/app/globals.css b/web/app/globals.css new file mode 100644 index 0000000..ca51706 --- /dev/null +++ b/web/app/globals.css @@ -0,0 +1,76 @@ +@tailwind base; + @tailwind components; + @tailwind utilities; + + @layer base { + :root { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + + --primary: 220.9 39.3% 11%; + --primary-foreground: 210 20% 98%; + + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + + --border: 220 13% 91%; + --input: 220 13% 91%; + --ring: 224 71.4% 4.1%; + + --radius: 0.5rem; + } + + .dark { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + + --primary: 210 20% 98%; + --primary-foreground: 220.9 39.3% 11%; + + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 20% 98%; + + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + --ring: 216 12.2% 83.9%; + } + } + + @layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } + } \ No newline at end of file diff --git a/web/app/layout.tsx b/web/app/layout.tsx new file mode 100644 index 0000000..3314e47 --- /dev/null +++ b/web/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/web/app/page.tsx b/web/app/page.tsx new file mode 100644 index 0000000..5705d4e --- /dev/null +++ b/web/app/page.tsx @@ -0,0 +1,113 @@ +import Image from "next/image"; + +export default function Home() { + return ( +
+
+

+ Get started by editing  + app/page.tsx +

+ +
+ +
+ Next.js Logo +
+ + +
+ ); +} diff --git a/web/bun.lockb b/web/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..8896b56b6c0854756da40f44224405f85b8d0e3f GIT binary patch literal 197725 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%0A`9N>d6q9d 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.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.2.tgz", + "integrity": "sha512-sk72qRfM1Q90XZWYRoJKu/UWlTgihrASiYw/scb15u+tyzcze3bOuJ/UV6TBOQEeUaxOkRqGeuGUdiiuxc5oqw==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.2.tgz", + "integrity": "sha512-q+Ec2648JtBpKiu/FSJm8HAsFXlNvioHeBCbTP12T1SGcHYwhqHULSfQgFkPgHDu3kzNp2Kem4J54bK4rPQ5SQ==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.2.tgz", + "integrity": "sha512-3iPgMhzbalizGwHNFUcGnDhFPSgVBHQ8aqSTAMxB5BvJG0oYrDf1WOJZlbXBgunOEj/8KMVbejEur/FpvFsgFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.2.tgz", + "integrity": "sha512-x7Afi/jt0ZBRUZHTi49yyej4o8znfIMHO4RvThuoc0P+uli8Jd99y5GKjxoYunPKsXL09xBXEM1+OQy2xEL0Ag==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.2.tgz", + "integrity": "sha512-zbfPtkk7L41ODMJwSp5VbmPozPmMMQrzAc0HAUomVeVIIwlDGs/UCqLJvLNDt4jpWgc21SjjyIn762lNGrMaUA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.2.tgz", + "integrity": "sha512-wPbS3pI/JU16rm3XdLvvTmlsmm1nd+sBa2ohXgBZcShX4TgOjD4R+RqHKlI1cjo/jDZKXt6OxmcU0Iys0OC/yg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.2.tgz", + "integrity": "sha512-NqWOHqqq8iC9tuHvZxjQ2tX+jWy2X9y8NX2mcB4sj2bIccuCxbIZrU/ThFPZZPauygajZuVQ6zediejQHwZHwQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.2.tgz", + "integrity": "sha512-lGepHhwb9sGhCcU7999+iK1ZZT+6rrIoVg40MP7DZski9GIZP80wORSbt5kJzh9v2x2ev2lxC6VgwMQT0PcgTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.2.tgz", + "integrity": "sha512-TZSh/48SfcLEQ4rD25VVn2kdIgUWmMflRX3OiyPwGNXn3NiyPqhqei/BaqCYXViIQ+6QsG9R0C8LftMqy8JPMA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.2.tgz", + "integrity": "sha512-M0tBVNMEBJN2ZNQWlcekMn6pvLria7Sa2Fai5znm7CCJz4pP3lrvlSxhKdkCerk0D9E0bqx5yAo3o2Q7RrD4gA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.2.tgz", + "integrity": "sha512-a/20E/wtTJZ3Ykv3f/8F0l7TtgQa2LWHU2oNB9bsu0VjqGuGGHmm/q6waoUNQYTVPYrrlxxaHjJcDV6aiSTt/w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", + "dev": true + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", + "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001612", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", + "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", + "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.2.tgz", + "integrity": "sha512-12/uFc0KX+wUs7EDpOUGKMXBXZJiBVGdK5/m/QgXOCg2mQ0bQWoKSWNrCeOg7Vum6Kw1d1TW453W6xh+GbHquw==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.2", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.2.tgz", + "integrity": "sha512-oGwUaa2bCs47FbuxWMpOoXtBMPYpvTPgdZr3UAo+pu7Ns00z9otmYpoeV1HEiYL06AlRQQIA/ypK526KjJfaxg==", + "dependencies": { + "@next/env": "14.2.2", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.2", + "@next/swc-darwin-x64": "14.2.2", + "@next/swc-linux-arm64-gnu": "14.2.2", + "@next/swc-linux-arm64-musl": "14.2.2", + "@next/swc-linux-x64-gnu": "14.2.2", + "@next/swc-linux-x64-musl": "14.2.2", + "@next/swc-win32-arm64-msvc": "14.2.2", + "@next/swc-win32-ia32-msvc": "14.2.2", + "@next/swc-win32-x64-msvc": "14.2.2" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..51b1687 --- /dev/null +++ b/web/package.json @@ -0,0 +1,32 @@ +{ + "name": "web", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "next": "14.2.2", + "react": "^18", + "react-dom": "^18", + "shadcn-ui": "^0.8.0", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^8", + "eslint-config-next": "14.2.2" + } +} diff --git a/web/postcss.config.mjs b/web/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/web/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/web/public/next.svg b/web/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/web/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/public/vercel.svg b/web/public/vercel.svg new file mode 100644 index 0000000..d2f8422 --- /dev/null +++ b/web/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/tailwind.config.ts b/web/tailwind.config.ts new file mode 100644 index 0000000..84287e8 --- /dev/null +++ b/web/tailwind.config.ts @@ -0,0 +1,80 @@ +import type { Config } from "tailwindcss" + +const config = { + darkMode: ["class"], + content: [ + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}', + ], + prefix: "", + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} satisfies Config + +export default config \ No newline at end of file diff --git a/web/tsconfig.json b/web/tsconfig.json new file mode 100644 index 0000000..e7ff90f --- /dev/null +++ b/web/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}